I had a client who hired me last May, then canceled last September. I kept her retainer, as per my contract. She called me back in November, asking if she could re-hire me and use the existing retainer for a different date. This was a first for me, so I said sure. Just this past January, she canceled again ...and wanted to know if I'd refund her money!
My contract states that any cancellation within 6 months of the wedding date results in complete liability for the entire contracted amount (excluding album credits), and the retainer is always non-refundable (always call it a retainer; never call it a deposit). There was one couple last year who canceled three weeks before their wedding, due to a breakup. I was expecting to have to go to court to collect my remaining balance but they sent me a check right away.