There are a few different ways to handle this, and many solutions have their own merits. I will give my opinion of the ideal way to handle this.
First, it's important to understand that no matter how complicated your system is, someone who is sufficiently invested in gaming the system (with appropriate knowledge) will figure out a way to game it.
To seriously handle this issue, if it is really an issue for you, you need to handle this in both the design and technical implementation of your game.
On the technical end, you need to basically play a game of comparisons.
In general, I am pro-logging if you
are running any type of game with user
interaction then verbose logs would
allow you to modify and tailor your
game based on real quantitative
Using your logs, you can set up a system to compare data between accounts of any number of similarities.
For example, if two accounts are using
the same IP address, or any other information that you deem an appropriate comparison measure, you would want to
be able to look at overall interaction
between the two (wins/losses, trading)
in relation to the amount of
interaction with others.
Using this data you can pass appropriate judgement on a case-by-case basis, or automatically. Depending on how widespread the issue has become, I would recommend an automatic option and handling any issues through a live moderator. It's important that you don't delete the account, just suspend it with a message along the lines of "This account has been suspected of violating this game's TOS agreement. If you disagree please go here" with a link to an arbitration panel or something.
It is important that such a thing is in place, because people could be sharing IP addresses at home, or at school. Also, for younger kids, they could be using their parent's email addresses, credit cards, or even names in their sign-up information depending on how protective they are.
The second phase is design side. While some benefit is to be expected, you need to sufficiently disincentivize this form of cheating with your gameplay. There are quite a few ways that you can go about this, there are the wholly annoying ones of very short timeouts (which may be necessary). But I feel the best way is by appropriately adjusting the benefits between two accounts.
For example, some MMOs have altered the benefit that high level players recieve when playing with players outside of a reasonable level range. This discourages players with access to multiple accounts from powerleveling themselves (atleast within a specific range)
You could even specifically target accounts that share data and directly decrease the benefit that they gain when interacting with each other. This would encourage interaction with other players, but it can be circumvented with proxy servers and it would be ill-advised depending on your target audience.
The other way that think would work is having gameplay so engaging that people can't really manage to play two separate accounts and still keep up with everyone else.
Of course with this system, you would need to spend a nice deal of effort tweaking to prevent false positives and what not.
You want to collect appropriate data that allows you to automatically detect and handle potential threats and deal with false positives on a user-by-user basis. A good deal of babysitting would be necessary to make sure you don't have false-positives.
Also you want to reduce the benefit of cheating with multiple accounts on the gameplay end.