besides the inherent difficulty of estimating the resources required to finish a large project that hasn't been done before...
i think what willie brown describes here is also part of the problem providing estimates for the time required to complete software projects: if we gave more honest answers as devs, bosses and people signing contracts would blanche, so instead of standing firm, we go lower, or cut corners, or both.
i think the two things compounded together (inherent difficulty of estimating large unique projects, aversion to seeing real costs) are why estimates so often skew too low when we're trying to predict how long it will take to write a thing.