Freelancers should always try to get at least a deposit upfront. When I was freelancing, I would get 100% upfront for projects under $500, 50% upfront for projects between $500 and $2000. For projects over $2000, I would get 25% upfront, and then set milestones with payments attached. I had a $7500 project once where the guy made the first 25% payment, I completed the first milestone (graphic comps and UX flowcharts) then he disappeared for a year, not returning phone calls or emails. He then contacted me out of the blue and made the second payment, and I completed the second milestone (HTML/CSS/JS coding), and then he disappeared permanently. Clients like these are exactly the reason you need to get some payment upfront.