I've got stuck in situations like this before.
Promise after promise, this is my own fault, I missed subsequent deadline due to different reasons: over-optimistic planning on my behalf, sick kids and various other personal issues.
Their business needs this done, and you've broken promise after promise. You need to stop making overly optimistic promises. When I've been in these situations, it is extremely hard for me to regain credibility with the customer. When you work in business, your reputation is extremely important. If you're going to make estimates, you need to hit them. If your kids/family are sick in the future, is there someone to help take care of them like spouse or other family? Look to move towards a "no excuses" future.
Of course some issues showed up and now today, when I tried to call our customer he hung up and hasn't replied to any of my emails.
He wants results, not excuses. He hung up because he didn't want to hear yet another excuse. What can you do to get the project back on track? What can you do to finish this project? How did you get involved in this project in the first place?
If I were you, I'd spend time today getting documentation ready to hand this project over to the next guy.
The system I took over which was supposedly ready to be used was far from being ready.
I've been in situations like this also. In the future, never spend significant energy describing this to the customer because it sounds like you're goldbricking. Why did the previous guy leave it in the unfinished state it is in?
And there have been failings on the customer side too: only testing when I watch over their shoulder and so on.
This was one of the most painful parts of the latest project I was stuck on like yours. The subject matter expert (who is retiring this summer) doesn't document anything, so most of the bugs result from my imperfect memory of conversations with this guy. Plus, he was used to keeping all the stuff secret to make himself indispensable, and that habit has been extremely hard for him to shake in his last 2 years on the job.
The other critical failure was that there was no test environment. For the past year, all code to be tested was promoted directly to production where it would be QAed by the end users.
The final situation was that this federal agency didn't have any budget to hire anyone, and I was finishing this project to save my friend from getting sued. In the end, they let me go (yippie!) and used someone working on a different (yet funded) project. It was more than a year late before I got involved, and even though they doubled their budget for the project, that budget was shot by the time I got involved.
Going forwards, you need to learn to do better estimates. Something like the diary recommended in PSP (book). This project is a failure. Also, you may wish to discuss things with your personal friends, do any of them have the skill and bandwidth to assist you in future screw-ups like this? Next time you get in over your head, will you repeat this failure or is there something you can do to mitigate the failure next time?