It would be possible to write a contract where the 'deposit' is non-refundable. Nobody bothers to for things with small dollar values, though. If it were a deposit on a $30K construction contract, imagine the contract that might be involved:-)
If you charge a 'holding fee', or a 'reservation fee' that is separate to the purchase price, I believe that it would truly be non-refundable.
And personally, I'm with Grant. If I charged a non-refundable deposit (which I never have for anything), I wouldn't give it back if the person changed their mind.