Banning a specific IP is pretty ineffectual. Pretty much every ISP offers dynamic IPs these days, changing a person's IP every so often so as to make them less vulnerable to people specifically targeting them. Then there are proxies, which basically allow people to spoof their IP within a certain range. If they get ipbanned while on a proxy, they need only request another IP, and they'll get it. It can take seconds.
The solution is to ban a range of IPs using wildcards.
Most people know what the common wildcard characters are:
? or _ = single-character wildcard
* or % = multiple-character wildcard
is pretty useless
bans a wider range of people
now we're banning with some semblance of permanency. That right there could very well cut off an entire proxy server.
The single-character wildcards would be less useful, but could still be used to thwart less creative griefers who create more accounts as they get them banned.
Now, while we're banning whole ranges of IPs and names, it would also be useful to implement a way to enforce exceptions to these wildcard bans. Make it something like this:
/68.1.* bans a range of IPs
\68.1.166.* lets a portion of that range through as an exception
Now, the backslash isn't a good choice since it's the escape character and might prove problematic to read in, but you get the gist.
It may sound cold, but I'd rather stop one determined griefer who was reveling in his invulnerability at that cost than let him run free on behalf of people I've never even met. If they want in that badly, let them appeal for an exception on the forum. Newcomers wouldn't have any fun anyway on a server with an unstoppable griefer.