The easiest thing to do for the spectator part would be to set up
SourceTV (via tv_enable 1 in the server's autoexec.cfg), then password the main server. Then, give all spectators the SourceTV address instead of the main server address.
SourceTV can also be used to record demos of the game that you can download and then turn into actual video files later. You start recording using tv_record on the server. I believe demos stop recording on map change, so you need to be aware of this. You can also set tv_autorecord 1 to make all maps auto-record.
You should be using mp_tournament 1 on the server. This enables the Tournament GUI for players and the Advanced Spectator GUI for spectators. It also makes matches not start until both teams are ready... and both teams can also assign names to themselves.
Lets see... other settings you might want include:
mp_tournament_stopwatch 1 - Used on attack/defend CP and Payload maps. Basically, it makes maps shorter by only giving the second team only as long to complete the map as the first team took. Make sure not to use it on other game types, though.
mp_winlimit - Used on CTF/Koth/5CP/PLR maps to control how many wins a team needs to win the map. Most leagues set this to 5 for KOTH, 3 for CTF/5CP, and 2 for PLR (I think).
mp_windifference - Used on CTF/Koth/5CP/PLR maps to control how far ahead a team needs to be before they win automatically. Often used in conjunction with mp_winlimit. Most leagues set this to 3 for KOTH and 2 for CTF/5CP/PLR.
__________________