Creating a software system without delivering anything to the users until everything is done, is like constructing a complete office building on its side, then trying to lift it into position. The system is likely to collapse in a heap of rubble.
The better approach is to construct the system Step-by-Step, creating a virtual spiral based on user feedback, and following the inexorable Laws of Computer Programming.
For more discussion of this issue, read Bob Green's two papers, Building Better Software and Improving Software Quality. Then visit the Extreme Programming Home Page.