First point: The customer doesn't care if the code doesn't work because you have a bad employee. Heck, the customer doesn't care if the code doesn't work because you ran out of unicorns to barbeque. The customer made a deal with your company, and your company didn't come through. That's the only thing the customer cares about. If you have a bad employee or insufficient unicorns, dealing with the employee or finding more unicorns is your problem, not theirs.
Second point: You can't give the customer everything the customer wants, which is at least perfection for free. Given that, the customer wants to know the deliverables, the cost, and the schedule, and wants to be able to count on them. The worst thing you can do for a long-term relationship is promise a whole lot and fail to deliver. You need to be able to deliver on your promises, so you need to get into a positioning of promising no more than you know you can deliver. While the customer may argue about this at first, it's better for everybody in the end. If the customer is unsatisfied because you're doing a bad job, that's one thing, but it's much more likely that the customer is unsatisfied because you've promised more than you can deliver. Negotiate reasonable expectations and you can stop working from home.
Third point: The customer will try to get as much as possible, and will probably have a skilled negotiator out to get the best deal. If you're a team lead, you're probably a techie, and therefore you're probably not a good negotiator. This means that, unless you watch things carefully, your customer will have you promising all sorts of things that you can't deliver. Negotiation is a learnable skill, but like anything else talent is involved, and you can't afford to study negotiation on anything like a full-time basis.
The correct response is to make rules for yourself while talking to the client. Remind the client that changed specs have costs, and refuse to commit yourself to a cost without a quick evaluation. Remember that changing even something small can have costs: it will take me perhaps an hour total to make an obvious single-line change in the codebase here, due to the procedure involved. Also, make a good estimate of how much time you've got for that customer. The customer will want you to be working 24/7 on his project only, of course, and you have to tell him that just isn't going to happen.
Bear in mind that the customer is used to walking all over you in negotiations, so you're going to have to make it clear that you're changing how deals are made, and you'll have to be especially firm for a while. It may be hard on you, but not doing this will be much harder on you.
Fourth point: You're in a role that's part management now, so one of your jobs is getting the most out of your employees. This includes handling problem employees. If you're ever thinking of getting into more management roles (and that is often where the money is), you're going to need to get better at this. You probably have some disciplinary authority, if only in an annual review, so let your employee know that you can and will use that if necessary. Other people have suggested code reviews, which is a great idea, since that way your other team members will be leaning on him to shape up, since his screwups will make more work for them. You may or may not be able to get the slacker off your team, and you can at least make the request. What you have to be able to do is get a good product out on time, without relying on every employee to be competent and enthusiastic.
Fifth point: You have other duties which take up much of your time. Take a look at them and see if you can delegate any of them and still have them done well. It's very common for technical people turned manager to try to do everything themselves, since it's usually easier to do one particular task than to get a subordinate to do it right the first time. Given twenty-five tasks like that, you're overwhelmed, so you need to pass off whatever you can. Learn how to delegate, and who can be relied on to do what. One good book (recommended to me by my father-in-law) is Managing Management Time.
Finally, you're obviously in over your head here. You'll have to learn to deal with this situation. Remember that you're responsible for what your team accomplishes, and neither your superiors nor customers are really interested in the internal details. Remember that you need to do what the customer needs, not flail haplessly trying to do what the customer says he wants, and remember that you need to substitute confidence in your estimates for negotiating ability. And learn about management.