Any good proxy checker (the same script you call to check them initially as the user) should be able to tell you. Go to:
http://www.proxyblind.org
or
http://www.ip.cc/check-proxy-basic.php
and you'll see the sort of info you're looking for. Just download a proxy judge script from somewhere and throw it up on your site.
For TOR and the like, there're scripts to auto-detect that too:
http://www.hackszine.com/blog/archive/2007/10/deanonymizing_tor_and_detectin.html
Of course, in that case you could also just monitor the TOR IP list from their own site and auto-block all those addresses. Stupid TOR, I never understand why people keep advocating it.
N