I feel sad inside when someone says “I want this website to work on the iPhone”. As if everyone who owns any other kind of phone have less right to see the website too.
Sometimes someone wants to specifically target an iPhone for a specific reason and that’s fine, but in general I prefer media queries that run fast and loose, and the mobile-ish styles are still flexible enough that even if you didn’t specifically write for a 120x120px screen, your site still deals with it pretty decently (won’t be perfect, but hopefully still usable).
Re the photo: the client is unnecessarily giving a burden to phone users by insisting they download 15 kb for 400px worth of the colour grey.
Since 90% of the image is useless, it might be fun to try the cropping trick.
This is where you set the image as a background of the photo div, instead of as an HTML image (esp since, looking at it, I could successfully argue that the image is mostly decorating the page rather than informing it). Then on the desktop/large stylesheet, just leave the background-position to 0,0.
But on the mobile stylesheet(s), find the pixel coordinates for the guy’s head (his face is the important part of the image, not which colour shirt he’s wearing) and let the photo div remain square (using % height and width, though the height will only work if the box it’s contained in has at least a non-% min-height) and set the background-postion to what would be the ideal top and left coords. Only on the smallest of screens would his face get cut off, but who cares if his shirt gets cut off?
Browser suck at resizing images, and it’s kinda unfair to ask those who may be paying for bandwidth and using slow internets to load a ginormous image suited for desktop, but if you have no server-side options then cropping is probably the better solution (see how tiny his head/face would get if you resized that image? At what point does it become useless to any sighted user?).
I wish I happened to have handy the site where I first saw flexible cropping techniques (and that one did use an HTML img, but it was positioned inside a div with overflow: hidden for cropping as the page width shrank), but depending on your level of CSS you might know what I mean now anyway.
If not, I can either go looking or build an example myself.