You will not be able to prevent people from registering as many times as they like - losing game, even if you implement IP tracking, phone number or SMS verification, et cetera (if you're giving away something worth money, I can assure you that someone out there will gladly game your system).
Do not provide anything free unless you can literally afford to give it away.
I'd provide a discount to first-time purchases and then use the payment information to determine whether or not the individual making the purchase has purchased before.
Edit: I understand that the limited free offering is central to your business, so my best advice would be to weigh the cost of abuse against the cost (and pain) of preventing abuse ... if you're giving away access to a file or web-based service, for example, the total cost of providing your sign-up with the offer and potential profit lost on abuse probably wouldn't justify a $5.00/signup expenditure on abuse prevention.
You have not described the registration process, but I can tell you off-hand that there is nothing you can do with the information in an HTTP request to confirm with any degree of certainty that the individual issuing the request has not signed up before.
You need identity information from your signups to verify with an out of band (i.e. not based on an HTTP request) solution - preferably one which makes sense to your users so they feel comfortable providing you with the information, is convenient and inexpensive for you to verify automatically, and is reasonably difficult to forge. Pick two :)
Assuming you can ask your signups just about anything, here are some options:
- E-mail Address Verification - A unique e-mail address is easy to come by, but if the financial motivation to abuse your offer isn't very high, it might be a sufficient deterrent to abuse. You could also require an "official" e-mail address, depending upon your clientele (i.e. do not accept addresses hosted with free e-mail providers, insist on corporate domains or private domains)
- Telephone Number Verification - A numeric code is e-mailed to your signup and then an IVRU dials out to your signup, who must enter the code to confirm his or her account. This option could become expensive and will likely be error-prone if you have a geographically-diverse client base - additionally, if the value of your free offer is significant, you should know that pre-paid cell phones provide an inexpensive way to acquire new phone numbers and it may or may not be practical to segregate land line providers versus mobile providers (again depending upon your client base).
- Identity Verification - People hate dealing with this and it is expensive, but if you're giving away something expensive like a weekend at a timeshare, it may make sense and be considered acceptable by your clientele. You can be reasonably sure you know who is responding if you request a photocopy of government-issued identification.
- Payment Verification - Some merchant account gateway providers offer $0.00 authorization holds - great way to find out whether your client has a valid card, however, there's no guarantee they have funds to pay for anything with this method and the cardholder's name will not be verified as part of the process.
If you would like to investigate telephone number verification, I'd recommend that you check out MaxMind - I am not aware of any truly independent firms which match MaxMind's offerings for price and effectiveness. (MaxMind's services support many white-label resellers)