Blocking by IP and Subnets is great in the short run... but it will always fail in the long run. People move. They set up proxies. They start attending new schools or get new jobs. Oh yeah, and they set up proxies. Anyone who wants to can just go to phpbuilder.com and ask about how to use curl and boom! They've got a proxy and they can register at your site again.
With Botnets, someone could hit your site with a different IP address every minute for the next 50 years.
There are a few solutions and none of them are easy.
You can charge ten bucks to register. After you cancel his account for the ninth time for violating your terms of service, he'll be pretty bored of giving you his money. And you'll have gotten paid ninety bucks for the trouble of deleting his account nine times.
You can build a moderation system like Slashdot has. This way, millions of little votes are cast every day that make the good content float to the top and the idiots get buried where nobody has to listen to them. This works really well when you have hundreds of thousands of active users.
You can make registration by invite only. Make the registration form require a secret, one time use, code. When you want your friend Bob to register, you give him a secret code like 1234567890. Then When you want your friend Mary to register, you give her a different entry code like 8838884885. This way, the unwelcome guy can't ever register.
None of these are simple solutions. If there was a simple solution, you'd know about it by now.