I’m very impressed so far with nuevasync.com for their over-the-air calendar synchronization. They have free and pay options. You set them up as an MS Exchange server data source and your contacts and calendar are synchronized with google. I love being able to edit calendar items with a full keyboard and also keep my existing workflow for using google to manage my calendar. Then I don’t have to think about arranging to synchronize… it just happens and the data is there the next time I look.
Beware, adding an Exchange sync source will mean the iPhone loses its current contacts and calendar events. I got around this by synchronizing contacts with funambol first and then restoring after setting up nuevasync. I didn’t have enough calendar events to worry about losing those.
Incidentally, the iPhone SDK does not allow for API access to calendar events. Apple gave in a little bit by introducing Exchange integration but that is just enough for someone who is willing to either run Exchange or something that appears to be Exchange on the other end. If you look around you’ll see that some sync experts like funambol are not trying to use the Exchange angle to get calendar events. They’d really prefer to just have the native API and their infrastructure is set up much better to work that way.