Seems that if the last thing you draw on a Graphics2D object is a BufferedImage, then none of the other graphics appear. Why???
If you find that drawing an image causes missing graphics elements, draw something else afterwards, because that seems to clear up the problem. You can draw something that won't be seen, like a 0x0 rectangle.