I had an journal entry back in August 2004, with the same title :-/
Unfortunately I seem to have been caught in a situation of somewhat the same character. I have delivered some software to a client - but way too late. My estimates where way of, but I have worked hard and the set of sub-systems is quite nice, still needs work but it is a good beginning.
I arranged for the client to pay in small rates in order to minimise the economical risk this time. But at some point the client stopped paying, I was too busy to notice and when I found out I addressed it with the client, which said that payments would not be made until delivery was made.
So I worked my a... of - and finally I delivered, then the client requested a meeting about the project.
Then something happended, which I should have forseen, they would not pay for anything, which went over the original price - of course I understood their arguments and I was kind of baffled, but bottomline I loose money and I loose a lot of money.
The thing that annoys me the most, is that I did not handle this well, I was expecting to finish the project earlier (on time) and I was expecting to make use of an external programmer, this was not possible to the extent I had hoped for.
So now my client sits with some really nice software, which they have got a hold of too cheap if you ask me - I am left we a wrecked economy and a bitter taste of not being smart enough for this.
So I have decided to make some changes, my project model has to change to XP, so from a basic estimate - the customer wishes can be implemented in stages, so the customer will get a better feel with the project and I will be able to control the project budget in a more sane manner.
Things are improvin, but I guess I still have lessons to learn and can only agree that the hard way is the HARD way.