The author saved a draft, or a version that was not made active, so the public revision has no image. Then: the file went into a file field, or was uploaded with type file, so the image getters return blank; the template reads a different layout area name; the template hides a blank image with isBlank() and the layout area really is empty on the active revision; or the template uses the placeholder getter and the placeholder setting hides it for visitors. Check the revision history and the layout area on the active revision.