Lots of directions to go with this question, here are 2.
1. The IO bound questions:
Your client_max_body_size has me wondering how big these images actually are. Whats the average size of these images?
A few lines of output from "dstat" or "vmstat 1" during peak output would be useful (or even "sar" if you run it).
If you are IO bound like I suspect, a reverse proxy via nginx's proxy_cache might be beneficial. You could just toss some 'hot' files into a ramdrive (/dev/shm) and symlink them (ln -s) to test.
2. Your PHP app is inefficent:
I run a php gallery (gallery2). Its pretty damn slow/cpu hungry. In order to speed things up make sure your php has something like http://eaccelerator.net running. It increased my performance more then moving from apace1 (yes 1) to nginx.