Short answer to your question, as it currently stands: No.
The reason:
Each IP would allow a single vote
Due to NAT-translation, a single IP address may represent a lot more than a single user (a public IP might point to an entire corporate network, for instance). Furthermore, using an IP address to identify someone is nowhere near feasible anyway; it can easily be changed, spoofed, etc., not to mention the obvious fact that several people living at the same address and possibly even sharing the same computer would obviously also have the same IP address.
I really can't see how you could achieve anything like this without including some form of user / voter registration, and the problem with that is obviously anonymity: How can you guarantee that a person only votes once, without storing at least some minimal amount of personal information?
At best, I can envision some kind of split system solution, where a vote is anonymous, but where it is backed up by some other service which can guarantee the uniqueness of each voter (at least to a certain degree of confidence).
As a basic idea, consider the following:
Create a voting system where anonymous users can log in using an access token, and register a vote which was digitally signed using asymmetric cryptography. That digital signature would be performed using a private key which would have a corresponding public key which was explicitly linked to the users access token. The token itself would be provided by a distinct service, so that the voting system itself would be cleanly separated from anything containing personal data about the voters.
From this, an auditor would be able to check the following for each vote simply by looking at the votes and the tokens:
- The vote was cast by a user carrying the access token X.
- No other votes have been cast by a user carrying that specific token.
Now you'll need to back this up with a token-provider service which can guarantee that each token has been granted only to a single individual (who is eligible to vote), and that no individual has been granted more than a single token (An auditor would probably want to evaluate this part of the solution too, but might be able to do so while still limiting access to personal information about the voters).
So how could you do this while keeping the amount of personal data at a minimum? The best option I can think of would be a system that stores a hash (an irreversible cryptographic "fingerprint") of some personal identifier, such as a social security number. That could be used to verify that no single identifier is ever used more than once, and yet prevent someone with access to the database from producing a full list of all those who have voted (since the list would only contain hashed values, which are by nature irreversible).
What this would not prevent though, is account enumeration; checking whether specific individuals are registered, provided you already have their identifier (if they were registered, then attempting to register again with their credentials should cause an error or warning, which would confirm that their account existed).
One possible workaround for this might be to simply register all potential voters from the start. That way, looking for an account belonging to someone who has voted would return the same type of result as looking for someone who had not, and the token based logic should still work. The main point is to split the identification and the actual voting into two separate parts, and use cryptography to secure the vote, while keeping the personal info out of it as much as possible.
This is pretty conceptual, and there is obviously a lot more to consider, but I hope it gives you a few ideas to think about in the context of your question.