* Have they fallen out with their previous developer / team
* Do they start off saying they have no budget
* Have they decided it's a short job but have no noticeable idea of how long things will actually take
* They only want to pay at the end of the job, when they've received everything
* They won't sign a contract
On their own, none of these is a deal breaker (apart from the last one.) However, if you start hitting two or three points, that's real warning signs that they're going to be a bad client.
In the UK, I and a lot of other developers and designers ask for some money up front (for new clients, long running clients not so much, it depends what they're like.) I started doing this from advice from another freelancer, and it's the easiest way of weeding out bad clients. People who argue about paying 25% to 30% up-front also tend to be the ones who pay late or argue about paying the whole amount.
By not working for clients who won't pay a deposit, I've actually saved myself hassle in the long run by not having to chase for payments.
The most I've been ripped off for is £300, but I've some freelancing friends who are owned thousands of Pounds by various clients.
To mitigate risk, if you're doing a lot of work for a client it's best to break it down in to milestones and bill frequently - at least monthly. That way if they haven't paid a previous bill you can stop working until it is paid, and you have less to lose.
[Edit - trying to format list]
I think it's usually quite easy to tell whether a client is going to be bad news; e.g. if a prospective client is looking for the cheapest solution above all other requirements, or they're very vague about deliverables it's probably worth giving them a wide berth.