Two options that address, in different ways, the issues that you've mentioned are:
1) EAP (Extensible Authentication Protocol) - available in windows XP, and windows 2000, sp3
dynamic VLAN assignment is only available through eap for certain switch platforms and versions at this point, but will continue to expand, quickly making this one of the best options.
Learn more about it here:
http://www.cisco.com/warp/public/cc/pd/sqsw/sq/tech/deacs_wp.htm
2) Cisco's URT - User Registration Tool
It's pretty kool - check out documention here:
http://www.cisco.com/univercd/cc/td/doc/product/rtrmgmt/cw2000/fam_prod/user_reg/2_5/user/index.htm
HTH
Jeff