I have a long list of customers who owed me money for work done, for a long time, but eventually paid.
Why? Because I was always courteous, and never threateneing, and never gave them half a chance to demonise me or justify to themselves not paying. Fact of the matter is that people stops paying you when they can not afford to or they really don't know how - or because they're angry at you and feel like you really didn't treat them fairly.
Even so, they have a list of priorities... and will pay according to their list, so all you need to do is to stay on top of ther list by being non-annoying, courteous and friendly. Assuming they know full well what you did for them, of course.
*NB* This does not include people whom I forgot to invoice, or whom I invoiced late. That's a whole different matter, that is just as bad, if not worse. If you do not invoice people on time, you mess with their cash flow. It is your responsibility to make sure they know what they owe you.
So I repeat: It is very important to invoice people on time! Some companies have a clause in their contract that if they do not receive an invoice within 3 months, you agree that they are disclaimed from having to pay. Make sure your invoicing system works!