I get postponements more than cancellations, which cocks you around just as much but at least you don't lose the customer, only the chance to earn for a couple of hours on a certain day. Mostly it's due to decorating or builders taking longer than they thought, so I've now started "pencilling in" and confirming nearer the time, which helps.
I think last minute cancelling like you mention maybe has something to do with what sector of the market you work in. I aim at the mid to upper sector and don't really suffer from it too much.
Most of the no-shows I've had seem to be lower end customers, who show even more disrespect by not even getting back to you when they read the polite not put through the door asking them to rearrange!
This business would run a lot more smoothly if it wasn't for all these damn customers
