The solution? Symbolic link the default calendar storage *folder* to your WebDAV server (not the individual .ics files, because iCal overwrites those). This method will insure that iCal will read the symlinks every time when its loaded, and write-to the symlinks every time it is closed. The idea came from the iCal weblog, so this is nothing new, although I'm shocked that more people do not use this method.
Instructions:
- Close iCal if it is running by hitting Command-Q.
- Upload your .ICS calendar files from ~LibraryCalendars to a folder on your WebDAV server (ie, a folder called "Calendars")
- Back up your .ICS calendar files from ~LibraryCalendars just in case anything goes wrong.
- Load up Terminal, and delete your iCal calendar folder by typing rm -rf ~LibraryCalendars -- but before you do so, make sure you've performed the previous step to create a backup!
- Connect to the WebDAV service through the Finder by hitting Command-K (Go: Connect to Server).
- Enter the web address of the WebDAV server you are trying to connect to. For example, your WebDAV document folder might be at the address http://www.myexample.com/mydocuments
- Once connected to your WebDAV server, load up Terminal again and navigate to ~/Library/ by typing cd ~/Library.
- Make a symbolic link between your WebDAV server folder and the 'Calendars' folder (that you deleted earlier) on the local machine by typing ln -s /Volumes/mydocuments/Calendars.
The only warning I have to offer is that make sure that you are already connected to your WebDAV server before launching iCal, or I'm sure nothing will appear in your calendar. Or worse, it's possible that iCal will create a new 'Calendars' folder and waste all your hard work symlinking it.
[robg adds: I haven't tested this one...]

