Here is my understanding of what is going on.
Uploading to FireFox or Safari directly from the camera does not seem to work and gives errors about the image format.
Doing the same thing in IE however works ok.
This alone tells me that the problem is not likely in the code for the upload since the code is not affected by the browser and runs the same regardless of what browser is used.
The EXIF format is not a file extension itself, but rather a way of packaging a jpeg so that it can contain more info about the image. The file format used for this type of image is jpg.
Since you can move the image files from the camera to the machine and get them to upload correctly this tells me that the most likely problem is retrieving the files directly from that location for these browsers. I'm not sure why it would not be able to do this but it probably has to do with how the browser moves the file temporarily or something like that.
If the problem is not the script that is doing the upload it is not an issue that we would be able to fix by updating the script. I know this is not the answer you are looking for but I think your best bet would be to just move the images from the camera to your hard drive before attempting to upload them.