Are your projects completed on time?
If not, what problems cause you to miss deadlines? How can they be overcome? Do your clients understand them?
Minimize and Negotiate
When developing software problems will arise, generally having protocols to deal with this situations helps minimize their effect. But, you should always have in mind that sometimes delays cant be avoided, there is where the Negotiation comes around. Talk to your client and let him know that you will be able to control this kind of situations. If you can make them part of the process, they will feel in control and more probably to overcome the problem faster.
The scheduling problems I've encountered are:
There are many other ways a schedule can go wrong, but these are the big ones. For mitigation, I recommend the following:
Only the ones with fixed requirements.