I had a couple ideas for team autobalancing. One would be a "loose" setting. Players could freely join other teams, but any time somebody said "teams", the game would check for unbalanced teams and move some players over to correct it. The advantage to this would be that it plays the same as it does now unless somebody complains. This could be good when a skilled player wants to play 1vs3 or some other unbalanced scenario.
The other would be a "strict" setting, which prevents players from switching to a team that already has an equal or greater number of players and immediately corrects unbalanced teams each round. Naturally these would be server settings, maybe g_autobalance 1 and g_autobalance 2 (for loose and strict).