I do exactly this, with my Desire and OH’s iPhone. I looked at many, many ways of doing this, and as others have said, the online Google Calendar is the glue that holds it all together.
The Desire links directly to Google, being an Android phone. On Google I have two calendars, the default ‘my name’ calendar and an additional ‘shared’ one.
The ‘name’ calendar I have synced to Outlook at work using gSyncit. (I think I had to use gSyncit for historical reasons, the default Google Sync tool might work as well here). This calendar has my work appointments in it, which my OH obviously has no interest in.
The ‘shared’ calendar has read/write permissions granted to OH’s gmail account. On her iPhone we installed Pocket Informant. This has the ability to sync OTA with Google calendar, and supports multiple calendars. She uses this to sync with her Google account, which picks up my ‘shared’ calendar in the process.
Now, on my phone I see both calendars, in different colours, and OH just sees the shared one. It’s all synced OTA on the fly and it’s no exaggeration to say it’s revolutionised our lives.