Sorry, in comment 17 I was lying. Of course gdm's init script stops usplash, but that's not actually the problem here.
The problem is that gdm's init script sleeps for 5 seconds _if_ usplash was running, to avoid having console output until X starts. These 5 seconds are enough to put the starting of getty so far out that gdm is already running and X grabbed vt1. Thus getty starts even though the VT is already taken.
Sorry, in comment 17 I was lying. Of course gdm's init script stops usplash, but that's not actually the problem here.
The problem is that gdm's init script sleeps for 5 seconds _if_ usplash was running, to avoid having console output until X starts. These 5 seconds are enough to put the starting of getty so far out that gdm is already running and X grabbed vt1. Thus getty starts even though the VT is already taken.