I wrote a module that prevented duplicate record duplication in CiviCRM. The basic problem was that users who registered in on a Drupal site with CiviCRM has a decent amount of information associated with their account. If they forget their password, they are more than likely going to create a new account rather than request a new password. The module I wrote was a basic small module that prevented that from happening.
Even though users can create whatever accounts they want to create, it becomes a hassle on the back end for the administrator to remove the duplicate accounts. What the module I created does is monitors the admin-selected registration fields in a hierarchical manor to make sure an existing record in CiviCRM does not have a Drupal user associated with it. If the Drupal user exists based on the selected criteria, registration for the user will be denied, their username shows up as their potential old record, and the user is told to request a new password or contact the site admin.
The challenge is really on the configuration. The site builder or administrator needs to select a combination or registration fields that make it unique. For example, the user the admin can't just pick the first name and last name fields because there is a good possibility that users registering have the same name, or they are a junior and a senior. Another good example of a challenge is dealing with people who use a nickname as their first name; Richard could use "Rich" or "Dick", Thomas can use "Tom" or "Tommy". This was why we decided to make it hierarchical. That way there are layers of validation the registering user will go through to make sure they are who they say they are, and they don’t already exist in the system.
I wrote this module for CiviCRM 1.7, and I’m aware of the Civi-DeDuplication functionality that comes in CiviCRM 1.8. The difference between what my module does and what Civi-DeDupe does is mine prevents it on the front end, and Civi-DeDupe is more of a "clean up after the fact" solution. They can both be used at the same time for maximum duplicate prevention.