I wholeheartedly agree with this. It's not a promise, it's a guess (37Signals):
“When is it going to be done?” is a reasonable question and we as software developers should try to come up with the best answer we can based on our experience and analysis. What we should not do, however, is treat our answer as solemn oath.
Unless you are doing the exact same project with the exact same team (highly unlikely), there is no way to precisely estimate when it will be completed. No amount of detailed project planning is going to predict the future.