there is no a bullet proof way.
Cookies can be deleted (or rejected to begin with, to make it even easier). Besides, the automated scripts, that generate thousands of votes in a second, just won't send the cookies to you at all (and those are the ones to protect against, not a poor user, who just happens to hit a "vote" button twice by mistake - that would not affect your outcome much anyway).
IP address isn't much better, because of tens of thousands of anonymous proxies, that are readily available to everyone.
Besides, some ISPs (like, AOL) use a pool of proxies for all their users. So, that if the same AOL user hits your website twice in a row, you could see two different IPs, and, what's worse, if you see the same IP again, it could be a totally different user, that just happened to get routed through the same AOL proxy.
The most common approach is, you set the cookie, and disallow voting if it is already set. That will take care about 80% or so of duplicate votes (most are made by mistake anyway, and most of the rest won't know to clear their cookies).
In addition, record a timestamp and the ip with each vote. You cannot just disallow multiple votes from the same ip, because, as I described above, that'll exclude most of the AOL users at once, but you can watch the traffic, and look for patterns - like lots of identical votes coming in from the same ip within a short interval - that could indicate possible fraud. This can be automated to an extent, but cannot be real-time (you'll have to look for fraudulent votes and clean them up later).
Next step would be instead of letting the user vote right away, to ask for an email, then generate a unique single-use link, send it to that email address, and register the vote after the user clicks on it. You'd have to keep the lists of emails that already voted somewhere, to check for duplicates.
This would make it next to impossible to come up with an automated script that floods your poll with thousands of votes to skew the results, although, the same person could still vote several times by registering several email addresses (cookies and ips don't protect from that either, as most people have access to more than one computer anyway).