I finally worked this out. My situation had old calendars that used to be synced in combination with switching to a different Mobile Me account.
Bottom line is that once a calendar is created locally on your iPhone for whatever reason, there is no way to delete it. You can only reconfigure the set of calendars, but how to do that can be a can't-get-there-from-here-in-this-state problem.
Here is a step by step of what I had to do to restore sanity:
This assumes there is no calendar information that lives only on your iPhone that you want to keep.
On your iPhone, in Settings->Mail, Contacts, Calendars, find your Mobile Me account, turn off "Calendars". Exit the settings application (hit the button to go back to the home screen), or the next sync will fail.
Temporarily create a calendar in iCal called "Apple FAIL" or something. In iTunes under your phone->Info, "Sync iCal calendars", select just that calendar (unchecking the option to sync iCal calendars won't clear out the stranded ones).
Under "Advanced" on the same screen (you might have to scroll down to see it), check "Calendar" under "Replace information on this iPhone"
Sync.
On iTunes, uncheck "Sync iCal calendars"
Sync.
On your Mac, delete the temporary "Apple FAIL" calendar you created
If you are using Mobile Me:
On your iPhone, go back to Settings->Mail, Contacts, Calendars, find your Mobile Me account, turn "Calendars" back on.
Otherwise:
In iTunes, select the iCal calendars you want and re-sync
Soapbox:
Apple is normally good at solving complex issues with an intuitive user interface and a convenient workflow. This situation is a fail on both accounts.
What lead to this situation for me is I wanted to see subscribed calendars on my iPhone in addition to using Mobile Me. Syncing a subscribed calendar in iCal from my Mac won't actually set it up on my iPhone as a subscribed calendar, so that calendar on my iPhone is only as up-to-date as my iCal version of it was as of the last time I synced, which then will only be as up-to-date as the last time I ran iCal and synced it. Instead, I have to manually subscribe to the calendars on my iPhone by either emailing myself the webcal: links or typing them into Safari on my iPhone. Managing subscribed calendars both on my iPhone and iCal is a giant PITA.