There was a question on stack overflow about inflating estimated project completion dates, after thinking about it I came up with some rules of thumb that I have been trying to follow
Estimate how long it will take and add 1/2 again as much time to cover the following problems:
1. The requirements will change
2. You will get pulled onto another project for a quick fix
3. The New guy at the next desk will need help with something
4. The time needed to refactor parts of the project because you found a better way to do things
and I don't I'm far off, if anything I think this is a rather conservative approach, most guild lines I found on line where estimate your time then double it.