Gordon Weakliem points out an interesting observation from Joel Spolsky - the construction industry misses time/budget estimates all the time as well. Think about other industries - how many movies do you hear about that run on budget and on time? The interesting thing about this is how software, movies, and construction are similar - in many, many cases they involve working with a lot of people you haven't worked with before - using a management team that may not be known or respected by all those involved. In other words, they are all ad-hoc projects that run with ad-hoc teams. There are some directors who seem to work with the same actors (and crews) time and time again - and I'd bet good money that, as time goes by, their on time/on budget numbers get better. Just as any construction crew that stayed together would - just as any software crew that stayed stable would.
Now think about that for a minute - because it actually runs counter to the way a lot of management teams think about software. What do they bring in for a new project - a team of consultants. What does the consulting firm throw in? A group that likely has no real experience as a team working together. That's probably one of the big reasons that large projects fail - the team never gels. It would probably be better to add a small number of new hires and work on the project with an established team of internal developers who have experience working together (I suspect that this is why the smaller consulting firms often do a better job than the big ones - they only have a small team of people who have worked together more than once).