I'll give back a deposit for any valid hard luck story. In the case of financing, I set a definite time limit for them to obtain the financing, usually 30 days (although the home selling market in my area is so hot it can currently take up to 60 days to get an approval and I honor that); otherwise the deal is off and they get their deposit back. In other words, I return deposits if the buyer is not in control of the circumstances.
But, if the buyer was negligent, or has remorse, or found a better deal, the deposit is mine. When I accept a deposit, I give a litle speech, explaining the purpose of a deposit and why I would keep it. Even the stupidest person can understand that lost time and lost sales opportunities have value if you explain it to them.
Most, however, are shocked. They're used to the car dealer who will accept a $100 deposit on a $30K vehicle and then return it if they change their mind. Once I explain that it's a psychological trick so that people will feel like they have already bought the car, and that private sellers have different motives, they usually understand. If they don't, I simply don't sell to them.
I'm much the same way on price negotiations. After I name my lowest price, I can't be swayed by pleas of, "I don't have that much." I explain that there is no reason why I should lose any money to help them.
I will give anyone who asks a "right of refusal" so if they haven't yet been able to make a deal with me, I'll call them first to see if they can match any subequent offers I get. That doesn't cost me anything.