I'm inclined to agree with most of what I've seen posted here - you probably got an unprofessional programmer who has just enough skill to get in over his head. He realized it's more work than he thought it would be, and thinks that it's your responsibility to pay him more.
Your best bet at this point is going to be to start over. Get yourself a good hacker; I bet there are a few around here looking for short-term gigs - I am, for one. If you have a decent written spec, it should be no problem for any decent programmer to give you a reasonably accurate timeline and meet the milestones. As others have said, pay by the milestone, and make sure you get the source code.
Your best bet at this point is going to be to start over. Get yourself a good hacker; I bet there are a few around here looking for short-term gigs - I am, for one. If you have a decent written spec, it should be no problem for any decent programmer to give you a reasonably accurate timeline and meet the milestones. As others have said, pay by the milestone, and make sure you get the source code.