On rare occasion, iCal under OS X will get really slow, or lock up. In this case the issue was caused by a repeating event which had gotten corrupted somehow and ended up creating over 12,000 instances within the calendar. It looked fine within iCal, however, when you export the calendar, it created a 4.5 MB file, with 12,000+ entries for the event. With that calendar deleted, iCal was fine.

I used TextMate and a regular expression (regex) to delete every instance of the offending event from the exported iCal file.

Step 1: Export each calendar from within iCal to their own .ics files.
Step 2: Quit iCal.
Step 3: Delete the contents from ~/Library/Calendars.
Step 4: Edit the offending .ics file. I used TextMate, but you can use a command line regex tool, BBEdit, Emacs, etc….
Step 5: Use a regex like this:

(?im)BEGIN:VEVENT([^ ]*)(?!END)(Forever)(.*?)END:VEVENT

where “Forever” is the part of the name of the event. It could be any string which only occurs within the bad event. Delete each matching instance. In TextMate I use search-and-replace. Save the file.
Step 6: Start iCal.
Step 7: Import each .ics file.
Step 8: Profit!