Cookies and JavaScript won't be too rigorous because someone could always fill out the survey again in a different browser or from another computer. Nothing prevents them from voting twice using a second valid email address either.
Why are people going to be filling out this survey? Is it something your company is asking clients or propective clients to do? Or is it something for casual web visitors?
If it is something you are specifically asking them to do, send each client a personalized email asking them to fill out this survey at
http://www.your-company.com/survey?id=sakj345nb354, where "sakj345nb354" is a random string that is matched to that client in a database. Once they've completed the survey, they'd be locked out and would probably not try to guess the code assigned to someone else.
It's much harder authenticating the ballots for casual web surfers. In the above scenario, you would be effectively pre-authenticating the ballots, which is just fine since you know who should be taking the survey. There no logical scheme, whether it be IP address-email address matching or something else, that will guarantee the validity of casual internet voters.
There's an internet voting system that might shed some light on this. It was developed as an alternative to traditional ballot box voting but was abandoned when the developer realized that securing the server completely was impossible.
http://www.free-project.org/
Peter