Commercial games are not enormous pieces of code. Most projects I've encountered out there in the world took maybe five or ten minutes to build. An hour was a sign you were doing something wrong. Of course, incremental compilation and incremental linking could bring that down significantly, but that meant you had to avoid touching header files. And C++ loves to put everything in header files.
Computers have gotten a lot faster. Software tends to get slower to compensate. I still use a 1998 MSVC IDE, in part because the compilation speed is unchanged since 1998, and therefore it actually compiles faster than it did back then, roughly in proportion to the speedup of machines (although I/O may dominate).
Games I write myself are much smaller than "real" games. 20 or 30K lines of code, maybe, compared to 150K LOC (System Shock) up to modern games of maybe 1M lines of code. (?)
By keeping the code base small, keeping the compiler fast, and avoiding STL (which slows compiles a lot) and avoiding C++ (which slows compiles a little, but maybe it's just correlation), I've kept my build times on my personal projects consistently under 10 seconds for a full build. This has radical consequences on the edit-compile-test cycle, and has the advantage, as noted above, that I'm not scared of touching header files.
(Similarly, I heavily optimize startup time if it exceeds a couple of seconds, so that testing doesn't become needlessly slow.)
I was just reading somebody talking about a gaming company that didn't have internet access. 'But what am I supposed to do while I'm waiting for compiles?' and of course they have answers that are blah blah blah and I'm all 'dude, if you're waiting for compiles, you're doing something wrong'.