I know this is quite a subjective question ( and is likely to be closed), but I think it would be useful if I ( and the rest of SO!) know how other developers are handling this situation, so I make it a community wiki and hope that it won't be closed.
As a software consultant, one must be able to accurately estimate the amount of time needed for a software project, because the clients demand it anyway. But we all know how complex software development is, and we all know the tendency of software developers to underestimate the amount of effort needed, and overestimate their abilities to deliver the solution just-in-time.
So, if you were a software consultant who is billing your client on complete project basis( but you have to come up with an estimate and then bill based on that), what would you do, if you found that the initial quote you delivered were way too optimistic, and that you needed twice the amount of time (or more) you estimated in order to deliver the solution?