How to ensure users can’t sign up for multiple accounts?

I'm working on a web app right now which users will normally have to pay to use, but I want to also offer a short demo period (haven't settled on how long yet, but somewhere between 1 day and 1 week).

In order to prevent them from repeatedly just using this demo, I need some way of identifying them that they can't trivially get more of (IE, it's trivial to get more email addresses through gmail. If you own your own domain, you can have a catchall email address at the domain.)

Possibilities I've considered are:

  • Phone Number
  • IP Address
  • Credit Card Number

The pros and cons I've thought of:

Phone Number

  • Pro: I don't know of an easy way to just get more of these. You'd need to buy more numbers, but the numbers cost more than my service do so I can't imagine anyone actually doing this.
  • Possible Con: Would asking for this disturb users? Will I end up with fewer signups because they feel like this is too private information?

IP Address

  • Pro: I can utilize this without even letting the user know.
  • Pro: There's no way they'll forget it.
  • Pro: Similar to phone numbers, getting more IP Addresses costs more than my service does.
  • Con: Multiple users sharing a single internet connection can't sign up.
  • Con: Users can't log in if they aren't at home.
  • Con: Cell users can't sign up/log in if they're on cellular internet.

Credit Card Number

  • Pro: I need to get this sooner or later since I'm going to be charging them for this service when the trial period is over.
  • Pro: Similar to the above two, getting more credit cards isn't particularly easy.
  • Possible Con: Asking for this would definitely disturb some users, since it would disturb me. When I'm signing up, I have no idea if this is a legitimately useful website. For all I know, it's just a phishing attempt where they just steal credit cards.

So I want to know - what is the best way of letting people log into my website? Since I have the trial period at the start, I want to ensure that there's a small, finite amount of logins they could possibly have (ideally, they can only have a single login).

Has anyone ever had to do this? Does anyone know of other ways I could do this?

Oh, one other thing: obviously I want to make sure that all possible customers can sign up. Besides just being disturbing to ask for, Social Security Numbers wouldn't work since those are mostly US only. My potential customers are anyone with an internet connection and a means of paying.