Thanks for the replies!
The dirs created by Zen (including the cache) have perms set to 777, the file I uploaded with Zen was 666. The files I uploaded with FTP were 644. I set everything to 777, purged and recached, but no joy.
I don't know if it's related, but this file is also not displaying: zp-core/images/zen-logo.gif (it's set to 644).
After I reset the perms I purged the cache and recached, the FTP'd files do not get cached (although the "uploaded via UI" file does). I know this because I looked into the actual cache directory.
PHP safe_mode is off.
public_html/.htaccess has zero bytes.
Tried a few other hacks like moving a "bad" image to a "good" directory, but it still doesn't display.
So to summarise, the problem is that images uploaded via the Zen web interface display OK, FTP'd images don't, in spite of resetting permissions.
Any more ideas? Anything I can test?
Thanks
John