When freelance coding I just charge by the hour and retain all source rights (which they can purchase). I invoice them by the week (unless they request otherwise), so I at worst will lose a week of work.
Also any of these issues can be avoided by just solidifying the payment process in your contract. I have an interest clause with monthly reminders. If they bring it up I just jokingly say something to the effect, "you're thinking of getting this for free?".
I'm assuming artists are in much worse negotiating positions since this seems to be a big issues.
I use
www.freshbooks.com for accounting/invoicing.