I know all too well the challenges of running a small business. Truth be told, my list of reasons for delay is a friggin mile long too...
That being said, I have never once accepted payment up front for a job. That way I don't feel guilty about not getting things done as fast as I'd like to. If we're working on a large job, occasionally I'll ask for a partial payment, usually enough to cover fuel and paying the help until we wrap things up.
There's been a time or two that, while waiting to be paid for municipal jobs, I've wound up puttering around the house not doing anything because we couldn't fuel equipment.
I suck at giving timelines to customers, and I've all but given up at this point. If they're not willing to accept a "We'll get there eventually" on a non-emergency job, then I recommend they call someone else... And pay at least twice what I'd charge in most cases. (Obviously, emergencies and jobs with a tight timeline involving other contractors get done ASAP)
All that to say: Running a business sucks on occasion, but I value a clear conscience and my integrity more than a fat bankroll that'll eventually run out when word get around that you're dishonest.