I personally would never ask for any money up front,I think it creates the wrong impression.
I've had people postpone before with plenty of notice which I can live with but I would be well pissed off if they only gave me a couple of days notice.
I usually say I'll get you 10% off your tiles and adhesive but I'll need to pick up the cash for them either the night before or the morning I start.Customers always seem happy with this.