Go into iTunes.
Connect an iOS device.
In the iTunes preferences for that device, go to Info (at the top), then UNCHECK the things that say Sync in front of them.(Contacts, Calendars, Mail accounts). This will allow iCloud syncing ONLY instead of trying to sync both locally AND over the air, which is generally the cause of the problem. You can also use iTunes to force a re-sync FROM your Mac TO an iOS device if you need to do that.
Open your System Preferences on your Mac, go to the iCloud panel, check what you want to have synced.
On your iOS device, go to the iCloud setting and turn on what you want to have synced.
Back to your Mac now.
Open your Address Book. Go to preferences. Under general, point your default account to "iCloud."
Open iCal. Under accounts make sure you have only iCloud. Then in the Main iCal window, click on Calendars and uncheck everything but your iCloud calendars. All your "On My Mac" if any should be UNCHECKED.
Open Mail. Make sure your iCloud account is there too. That's all you need to do there.
That should take care of it. Every device -- your Mac and any iOS devices (repeat the iOS part for each device of course) -- should now be drawing its information from iCloud so that if you make a change on one device it will show up momentarily on the other.
If you've gotten your iCloud stuff particularly fouled up, you MAY need to turn off iCloud on some devices and turn it back on (forcing a re-sync), but you should shortly be without duplicates.