I was a manager and never missed a deadline. It really isn't that hard. Most people fail because they do it the wrong way. First give no estimates until you have developed a good picture of the global architecture and have some bare bones functionality running. This takes about 1-3 months of your team, but well worth the effort. Then keep an eye from the very beginning on who's falling behind, and move resources around to support the people who ended up with more than their fair share. Assign a medium size portion of the project to your senior developer(s) so that they are available near the end to go and help in those areas that turned out to be gorier than predicted. You cannot bring people from outside since it takes them too long to ramp up as obseved by Fred Brooks. This is why you use your senior people: they know the whole system and can jump in in any part***. Stand firm in your refusal to add features and lastly, near the end, drop any minor feature which gets postponed to version X.1.
Most costumers are happier with a version in time with 95% of the features than a complete version three months late.
Also be realistic with what means to be in time. If you take three years to develop a system and you are five days late, you were off by 0.5%. Any one who tells you in this case that you were late is just mathematically innumerate. I was never more than a week late, but I'd dare say that even an error of 5% (which for a three year project is seven weeks) should not be considered late. Forecasting is an imprecise science afterall.
Oh and one last thing, there is one estimate you tell the team and there is another one in your head. So the goal is "we run as hard as we can to finish by May 10th, so that when sh*t happens (which always does) we make the real June 1st deadline (which you always keep secret so programmers don't budget for it.... you know, work expands to fill allotted time).
*** Stu Feldman, a Unix principal was used this way, according to Ritchie. Stu didn't fully own a single component of Unix but his code is everywhere, doing central things that had fallen behind and were passed on to him.