I have done some looking around for info on the EXIF format and all the info I see says it is a type of jpg image. Is the image saved with the jpg file extension in the camera? If you do not have file extensions showing you should make sure to do this first then check to see if the .jpg extension is set for the images in the camera. You might also be able to right click on the image to bring up the properties to see if the information is in there.
From what I have read this format is used by digital cameras to encode extra information in the image file, but it should still be a jpg image. It is possible that the browsers are treating the image differently based on the extra EXIF info.
Also, just to clarify if you have the web images only option turned on and use IE it will allow the image to be updoaded correctly rite? If this is the case then it indicates that it is not something in the script that is treating the image differently but rather the browser itself since the server side code runs exactly the same regardless of the browser. Please post back with some more details about this so we can investigate the issue further, if needed I will open a ticket for you on this so we can do more in depth analysis.