I had this exact same problem when I was using the Missing Sync to sync my Palm with my macs (Missing Sync + DotMac Syncing = headache).
For me, their was a corrupted calendar file that was screwing up the works. Here's how I isolated the corrupted calendar file (there could be a better way).
In ~/Library/Application Support/iCal/Sources there are a series of folders that have your calendar information. I copied these all to the desktop.
(1) Move a calendar folder back into the Sources folder.
(2) Start iCal. If everything is fine, then that calendar is not your corrupted calendar.
(3) Quit iCal.
Repeat ad nauseam (I have some 14 calendars)...you will know the corrupted calendar when your problem arises again after copying it back into the Sources folder.
How did I fix the corrupted calendar? Unfortunately, I had to just make a new calendar in iCal and redo all of my events and to-do's.
Hope this helps...and I hope you find a better way...
(BTW...now that I'm no longer using the Missing Sync, iCal works marvelously!)