Even though the antagonist of the story, George Broussard, co-owner of 3D realms, didn't consent to be interviewed for this story, Clive Thompson pieced enough together to get a good picture of what the hell went wrong. And it's obvious.
Here's the bottom line: bad management. Broussard kept stalling and stalling the release because he could, since he and the company were both bursting with enough cash to sustain things semi-indefinitely. Until they weren't.
Obsessed with moving the game into the latest engine, starting from Quake, to Unreal, to whatever-the-hell-else they were using between 1998 and now, Broussard basically condemned the game to development hell. If he had taken the boss's role of putting his foot down and making a decision to ship the game instead of constantly being in the engineer's role of always wanting the newest thing, we'd probably be playing the 3rd sequel for Duke Nukem by now.