Users with dynamic IP's cannot be blocked using this method (without blocking a whole range of users). The only other option I know of is to uses either cookies and client information.
Using cookies will not only work if the user has not cleared them out, and they support them. So this is not 100% proof.
You could track user information like, OS, Browser, Screen Colours etc and validate this in conjunction with cookies and IP ranges. This has a much highly likelyhood of been successful.
🙂