This is obviously buggy software from Apple creating these duplicates - causing problems for loads of people I know.
Baloney.
This is a typical example of garbage in = garbage out.
With a MobileMe account with contacts being synced over the air with the account on the iPhone, this means the OP also selected sync contacts direct with a supported address book application on her computer, which is selected under the Info tab for her iPhone sync preferences with iTunes. When syncing contacts over the air with a MobileMe account on an iPhone, the following is included below Sync Contacts under the Info tab for your iPhone sync preferences with iTunes.
+*Your contacts are being synced with MobileMe over the air. You can also choose to sync contacts with this computer. This may result in duplicated data showing on your device.*+
This should read - this WILL result in duplicated data on your device if you are also syncing the contacts in the supported address book application on your computer with your MobileMe online address book. Not may, doing both will definitely duplicate the contacts on the iPhone.
The option to do both was added by Apple for those accessing a company Exchange account on their iPhone along with syncing company/business contacts and calendar events over the air with the Exchange account on their iPhone who also want to have access to personal contacts and calendar events on their iPhone synced direct with a supported address book and calendar on a personal computer at home via the iTunes sync process. When doing both in this way, you can view business and personal contacts and calendar events combined or separately on the iPhone with business and personal contacts and calendar events synced and stored separately on the iPhone.
When doing both with a MobileMe account with the supported address book application on your computer that is synced with your MobileMe online address book, this does nothing but duplicate all contacts on your iPhone - one set synced over the air with the MobileMe account on the iPhone and the other set stored locally on the iPhone and synced direct with the supported address book application on your computer via the iTunes sync process.
A typical example of Garbage in = Garbage out which has nothing to with buggy software or bugs in the least.