The method of closing all slots but one and then opening a new slot after someone joins seems to work pretty well, but it is a pain in the ass.
How about the following system:
1. when a player attempts to join a game, 'queue' that player behind everyone else that has attempted to join first.
2. the player first in line only attempts to connect to those already in the game-room.
3. the player currently attempting to connect to others in the game-room has 20 seconds to do so.
4. if that player fails to connect, he is dropped and banned from attempting to connect to that game again.
Would this work? I don't think it would take more than 20 seconds if the player first in line was only attempting to connect to those already in the room. The long waits are usually due to a single player that is attempting to connect and is preventing EVERYONE from connecting to ANYBODY.
*edit*
for those that don't know what I am talking about, if you start a game and immediately close all the slots, then keep only ONE slot open until someone joins, you will have much less trouble filling your game with players. The key is making sure only ONE slot is open at any time. This ensures only one person is trying to join. Problems arise if you leave two slots open for even a short period of time and before you can close one of the slots, two people attempt to join.