lavrusik: Often times, developers won't know how long something's going to take until we dig in. Most of the time, if you set a deadline ahead of time and want said deadline met, you're going to have to cut features.
Also, feature-creep has been a very real thing with every project I've done. You start off with a list of features that looks doable in a month, but a week before launch (because nobody looks at anything until at least that close to launch, and usually much later), suddenly there's a list of tweaks, adjustments and new directions that push the deadline back.
In other words, you generally have two choices: make the deadline, but cut features or miss the deadline, but get all the features you want.