GCALDaemon is a free open-source Java daemon designed to help you synchronise your desktop applications with your Google account.
Google Calendar Sync
GCALDameon's first aim seems to be synchronisation from and to your Google Calendar. And you can do that with any application supporting .ics files. This implies not only iCal, but also Mozilla Sunbird, etc. There is a very good step by step tutorial on their site on how to install the daemon and set the configuration file to sync one calendar. It's not clear in that tutorial, but you can sync multiple calendars, you just have to put an index after each configuration key. See the rainlendar tutorial for an example.
GMail Contacts in Address Book
You can also access your GMail contacts across an LDAP interface using this daemon. This is not bidirectional, as you can only consult the contacts registered in GMail, not create/edit/delete any new ones. The configuration is very simple. In the GCALDaemon configuration file, set the key ldap.enabled to true, and set your username and password in the same way as you did for the calendar access. Then launch Address Book, open its Preferences, and go to the LDAP tab. Click the + button to add a new server with the following configuration:
Mac OS X Hints
http://hints.macworld.com/article.php?story=200703080908446