Usually the best way to have this work is to make all the images the same width through CSS – a default if you will, then simply add margin: 0 auto; to center them horizontally.
Leave the height as the only variable.
I know you said in #2 above that they won’t all be the same width, but heck, why not force it with CSS, there’s no disadvantage to it, and they will scale proportionally if you don’t force a height.
As far as #4 above, you can set a max-height on the images, to standardize it a bit.
Doing what you want in 1-4 without any Jquery help — cross browser — isn’t really possible with just CSS.
Hope you find your way :) (using Jquery isn’t a bad thing if done right)