As other answers have made clear, the problem as stated does not have a perfect solution, only approximations and disincentives. If you need to establish before creating an account that the user has not already opened one, then there is nothing more to add.
Non immediate approach
However, if it is acceptable to create an account without checking identity, and then gradually over time close accounts that have been identified as duplicates, then you may be able to bring the number of duplicate accounts to an acceptably low level with far less hassle for yourself or your users.
If your users will interact with, for example, a website using their account on a regular basis, then their input can be used to keep a "fingerprint" of their input style. This could be in the form of speed and frequency of mouse movements and keystrokes, use of particular words, phrases, use at particular times of day and week, or anything else that your particular situation makes available. The more different measures you can include the less susceptible your resulting fingerprints will be to oversights or false positives.
Ethically I would expect this information to be treated in the same way as actual fingerprints. The user must be informed that the information is being gathered, have the right to request a copy of it or to have it deleted, and have assurance that it will not be shared without their explicit permission. Otherwise it could be used to leak the identity of a person to any unrelated website that has bought their fingerprint.
While this "identity" may not include their name and address, just knowing that a user has an account with a given website may be of value to advertisers or organisations wishing to screen their users, so I would still consider sharing this fingerprint to be unethical without explicit consent.
Relevant prior work
Work has already been done on such fingerprinting. For example, this paper. The link only gives access to the abstract. I could not find a free version of the full article, but the numbers given in the abstract give an idea of how quickly you may be able to create an accurate fingerprint. There is free information at this Wikipedia page. While you will need to store data for every account on your servers, the bulk of the work of gathering, compressing and comparing fingerprints can be done on the users' computers.
This information can be used to highlight potential duplicate accounts, which can then be either closed if you are sufficiently certain, or raised with the user to request identification if giving them the benefit of any doubt. If you are prepared to accept some duplicates existing for the time taken to identify them, then this approach allows the majority of users to never have to provide identification.
This approach will not prevent all duplicates. It will be effective with most users, but software could be used to mask typing patterns and even times of day (submitting information while the user sleeps for example). There is also nothing to stop a user from opening a new account and getting a friend to do their typing (providing that friend does not have an account of their own which would then show up as a duplicate).
There are opportunities for false positives which would need to be addressed in order to avoid excluding groups of people. For example, there are a wide variety of reasons that a user might not be able to use the keyboard or mouse and would therefore have someone to type for them. If that person also has an account, it will show up as a duplicate.
All of the problems with identifying people still apply, but this approach allows the identification to only be required for a much smaller set of users.
Unlikely to suit decentralisation
If you wish to provide a token in a one off event, with no possibility of deletion of duplicates that are identified later, then this won't be of any use to you. If (as hinted in one of the question comments) you are looking to set up a decentralised system with one account per person, this approach is not strictly incompatible with decentralisation, but it would need to have a very low rate of false positives when deleting suspected duplicates, especially if the token is linked to monetary value. Another major problem would be protecting the fingerprinting data from being extracted from the decentralised software for use elsewhere.