Now that I've swapped my Windows Phone for a Nexus 4, I've discovered what a mess my Google Contacts are in once synced to Android and enabling Google+ to supplement contact data. It didn't matter too much on the Nexus 7 tablet, but on the phone it's more frequently used, so having the same contacts appear three times is a problem!
Note: The People app has a "join" feature that lets you merge contacts on the device; however this is stored on the device and not synced anywhere. With multiple devices (and the possibility of buying new devices/factory resets/etc.), this isn't an ideal solution, so I wanted to fix the problem at the source.
I did all the usual stuff (merging duplicates in the Google Contacts web app), but still found some contacts where I had 2, 3 or even 4 copies once they made it to Android! I spent many hours going through making tiny changes to contacts to figure out what was causing the duplicates, and I've listed all the things that bit me below.
"Email Contacts" in Google+ Circles
I found a number of circles that had "email" contacts in. When Google+ first launched, I just put people suggested by Google into circles. These often turned out to be non-Gmail email addresses; and the person subsequently joined Google+, making two contacts with the same name/email. The fix is easy; just remove all email contacts from circles.
People with multiple Google+ Profiles
Because Google are pushing us into upgrading all Google accounts into Google+ Profiles (eg. you can't share pictures with Hangouts without this; despite it working in Google Talk), many people have two accounts (especially if they use Google Apps for work). To fix this; I just uncircled all but what appeared to be the "main" account for anybody with multiple.
Google Contact records with different names to Google+
This one is pretty stupid. I had my parents named "Mum" and "Dad" in Gooogle Contacts, and some contacts as Mike and Matt that were Michael and Matthew in Gooogle+. This seemed to confuse the Google+ sync, and showed them as separate contacts in the People app. I couldn't find a fix for this; so mum and dad now have their full names in People :(
Google+ syncs stale data!
This one bit me the hardest. Every time I thought I'd fixed the issue, dupes would reappear a few minutes later. I believe the problem was that the Google+ app cached circle data (so all my changes to circles for the above where stale) and then syncs it into People. To fix this, after each change, I did "Clear Data" on the Google+ app (in addition to the Contacts and Contacts Storage).
Multiple profile URLs against a Google Contact
This is similar to a contact having multiple Google+ accounts. I found that when I'd added some contacts to circles, it had copied their profile URL into the contact record (under URLs, with a type of Profile). When I'd merged contacts, I ended up with multiple of these against the same record. This also caused the contact to appear twice! Fixing this was easy; I just deleted all profile URLs against all contacts, unless it was the only piece of information tying them to their Google+ profile (in most cases, I had the email address, so this was not needed).
After all these changes, I've cleared data/caches and forced syncs several times no both devices, and haven't (yet) seen any contacts duplicated again :-)