Getting paid. I finish work; I send an invoice; I get an email back saying "thanks, we'll process this right away"; and I wait. A month later, I send another email and get told that it "slipped through the cracks" or "got lost", and a week later I get a check in the mail. I think I'm batting roughly a 50% average on getting paid without sending the "uh, where's my money" email. I always get paid eventually and withou…
You need to get 50% payment upfront. Or work in blocks of money on account (eg for a $50k job, you have the client send you $10k in advance and when that is near depleted you have them wire you the next $10k, etc)
Breaking projects into billable milestones is a good idea for other reasons (it's a buffer against scope creep, providing you with periodic scope/schedule resync points), but it doesn't solve the payables problem. It's bad business to tell a client "I'm not going to proceed on milestone 3 until you pay me at least milestone 1".
I'm sure there are people on HN who are shocked-shocked! to hear that suggested. But you can safely assume that HN consistently undervalues what is probably one of the most valuable assets a consultant can have, which is "ease of working with".
When you commit to 4 milestone phases, and you client says your payment is in process, you have to keep working. The client is depending on the job getting done. You may be tempted to reply "but I'm depending on being able to afford dinner tonight". Your client doesn't really believe that it's their problem that you're not well capitalized.