How reliable do you need it to be? Cookies might work. You'd want to code the thing so they couldn't take the quiz until one was set, and set it so the expiry date was far enough into the future that it wouldn't matter again. Of course, the real bstrds will erase their cookies and come back, right? And, then, some folks will be disappointed 'cause they can't take the quiz...how much of a PR issue is that?
IP verification has one problem: what about multiple users on a local LAN, using NAT, show that they all show up at the same IP? I'd think this would be a large percentage of users these days...for example, my kid, my wife, and I would all show up at the same IP, though we each have a box...
/me decides I need to study 'sessions'....