At my company we use simple analysis on previous estimates and adjust future estimates based on past errors. We are usually about 70 to 100 percent accurate using this method. However, projects are usually not more than 7 days of work in my case.
Sometimes it's an environment change. Are these consistent? Can they be modeled statistically?
Often, it's an inaccurate belief in the work to be done. Was it lack of requirements, that had to be expanded? Etc.
When I work in development, I spent up to 20% of my time on "overhead" tasks. These are of the estimate review type, not meetings. It's something a great manager will do without wasting his team's time, but as an independent, I spend a lot of time doing it myself, and it's amazing how much it helps to dedicate time and write things down.