I've been wrestling with this for one of my clients, the CEO of course😀 Iphone 4S - Office 365. He has 1000+ contacts and this was a severe problem from the beginning. Adding/removing account or turning contacts on/off does not help.
We took the drastic step of starting over with IOS(using a tool to only restore the bare minimum of his data, not a full itunes restore which was tried previously and did not help at all) and that seemed to have solved it. That was 2 months ago and I just found out the dupes are back. It's not quite as bad as it was but still frustrating.
Some observations:
Based on what I am reading here it only seems to be happening with devices that shipped with IOS 5. I don't think I have seen anyone reporting it happening it on an iphone 4 and it is being reported on ipad 2s, many of which shipped with IOS 5. In fact I have put my users account on my iphone 4 IOS5 and ipad 2 IOS5 which shipped with IOS 4 and it does not happen on either of those.
I can get the dupes to go away manually with the following process. In Outlook, move offending contact out of Contacts folder. On iphone, wait for one of the dupes to go away. Then manually delete the rest of the dupes on iphone. In Outlook, move the contact back into the contact folder and let is sync back to the phone.
I hope that by sharing this info someday we can have a solution. IOS 5.1.2 perhaps?