OK. I think I have your culprit: Palm Desktop (assuming that's what you are using). I am 99% certain it's not a problem of iCal's making.
Palm Desktop has no concept of time zones, so it works with whatever is in the System Preferences time zone, to give a "helpful" conversion to your time zone when exporting to vCal. It does not, however, specify a time zone in the resulting file but rather does a conversion - so an event at 10:00am in New York will show as absolute "zulu" T150000Z - 3pm - in GMT.
When iCal imports this file, it uses the absolute GMT time. Whether time zone support is on or off, however, it will use the offset of 5 hours between local time _in the System Preference Date & Time pane_ and GMT to set the start time at your location, so once more it is shown as starting at 10:00am.
So what's the answer to your problem?
Turn off time zone support in all your calendar apps: iCal, MobileMe, iPhone.
Check your System Preference time zone is correct - and preferably set your date and time automatically for accuracy.
Export from Palm Desktop (I was working with v 4.2.1) in vCal format and import immediately to iCal without changing location or time zone settings.
NOTE: None of the events that you have currently imported will be fixed by this solution as it all happens at the time of export from Palm and import to iCal. You could delete the iCal data now and start over with the last spreadsheet you received to prove the solution.
You will also likely have all sorts of problems when Daylight Savings comes in - if t he season crosses that boundary (forgive my ignorance) as I don't think Palm understands that concept either.
Finally, may I ask what your reason is for maintaining the original data in a spreadsheet - or is it provided from elsewhere in that format?