The only real way to solve the problem is to filter the users who are allowed to vote. You need to be honest with your community and say that you are not interested in opinions of unestablished users. There are many reasons that might make you think this way, for example, but not limited to:
- People who just pass by are likely to leave soon and not be affected by the decision they are supporting.
- New users may not understand the scope of the problem being discussed, even if they have all good intentions (that was the reason of me not voting in the last moderator elections of RPG.SE).
- Allowing new users to vote promotes sockpuppeting.
So, you need to choose a method to filter the users. Some methods are usually just bad and ineffective, for example:
- Allowing only one vote per IP allows people with dynamic IP vote more than once, while people who share IP for whatever reason cannot share their possibly different opinions.
- Only allowing votes from accounts that are at least N days old. It does not protect you from prepared attacks (one could carefully register a lot of sockpuppet accounts that you won't notice until the D-day). It also does not really distinguish an active user who is just kinda new to the scene, but very active, and someone who has just registered sometime ago, forgot about their account and remembered about it yesterday. This method can be valid sometimes, but clearly not on its own.
- Amount of posts they have created. It encourages spam.
They might not be inherently bad, but from my experience in various communities they usually don't work and do way more harm than good.
Methods that work if implemented well:
- Accepting votes only from people who have shared their personal information like real name and a photo: it is hard to fake real-life identities. This also helps if they lose their password and e-mail: they would be able to show you a filled password restoration paper with a real ID attached to prove the ownership of the account. Note that you are not allowed to do it in some jurisdictions! Beware the law!
- Accepting votes only from people who have been manually selected as trustworthy. That might sound mean, but this really, really works.
- Only accepting votes if you write a comment explaining why do you think this way. Takes more effort than voting, and you will be able to find sockpuppets by similar writing style, similar mistakes etc.
- Only accepting votes from people who have measurably contributed to community in some way. For example, StackExchange network uses reputation for that, and it works -- I would increase the thresholds, though, it takes too low amount of rep to be able to vote. One popular Russian IT web-site makes you contribute at least one well-received article for your opinion to count.
- Only accepting votes from people that were invited by other established users.
- Disclosing names of every voter. This way it might be easier to find out the sockpuppeting.
Those are some of the ways you can use.