For example, if you're asked to estimate how long it takes to drive from Portland to Seattle, you could say about three hours. But if someone asks you how long will it take to drive that route on May 8th, 2009, the answer would be "probably three hours." That's true, but what if there's a wreck along one of the stretches without easy alternates? It could be a four or five hour drive.
Driving times aren't the best comparison to what I have to estimate. It's more like predicting how long it will take to build a house. We have to add buffer for complications, changes in plans and unexpected delays. But where there's a lot of data about how long residential construction takes, there's not really good comparison information for IT development. If house builders had to invent how the walls go together each time, and every house has its own set of codes and standards, and even the materials were always different, how could they predict?
So we do the best we can, but whatever numbers we come up with, the Business People will want to treat it as an Absolute. If a project goes over its estimate, they want to know why! And the real answer is often "Because it took that long." It would be so much better if we could tell them exactly how long it will take for a given effort, but that's as likely as being able to know that I-5 won't have any accidents on the day you drive to Seattle. We do the best we can, but there's still a lot of guesswork.