Your jurisdiction may vary but in Germany a lawyer explained to me that the lack of contract in this situation isn't as big of a problem as you may think.

You've been working for someone and invoicing them for it, they've paid those invoices. This went on for some time and you've continued to work for them. That means you've had some kind of mutual agreement (an informal contract) on how you should be paid for the work, i.e. they must continue to pay you if you continue to work for them.

Unless they can prove that the relationship was terminated before you started with the work you are invoicing them for, the invoice is valid and outstanding payments have to be completed.

The only problem is that because of the lack of a contract you are in a position where you have to prove that you did the work covered by the unpaid invoices and that you had reasonable grounds to assume the relationship was ongoing at that point (any correspondence with the client or source files might suffice).

So without a contract you're in a weaker position (because the contract would be more difficult to dispute than an informal agreement) but you likely still have a case.

That said, pursuing legal action should be the last resort. I would recommend the following step-by-step escalation:

0. Stop all work for that client immediately. No pay, no work. Any additional work you do now is work that may end up remaining unpaid (e.g. if the client is not paying because they are secretly bankrupt). Try to find other client work so you can afford legal costs. Don't expect that you will see your invoices fully paid and all your costs covered -- your client hasn't paid, so your current situation is that you have no money and the client is at an advantage (whether they can make any use of it or not), you're only seeking to re-balance this, nothing more.

1. Try to talk to them, preferably in person. While e-mails are good ammunition if you need to take this to court, personal interaction tends to be more direct and more difficult to ignore. Remember to stay calm and orderly -- for all you know they're just unintentionally careless and mean you no harm.

2. Send them payment reminders. Make sure to mention the due date and the current date. If possible, make sure the post office sends you a signed delivery confirmation (yes, this means sending actual letters).

3. Repeat step 2, but inform them that failure to respond will result in late fees (if your jurisdiction allows for them -- in Germany there's a fixed percentage you are generally allowed to charge per day over due but YMMV).

4. Repeat step 2, but now add any late fees as well as a notice that a further delay will result in more fees and possible legal action.

5. If you haven't yet talked to a lawyer (it's a good idea to talk to one before this, if only to make sure you know your exact rights), now it's a requirement. Have your lawyer send them another copy of the invoice with a cover letter informing them that they must pay. Make sure your lawyer has all the relevant information (e.g. any relevant correspondence).

6. Everything after this point can and should be handled by your lawyer. Most people want to avoid taking this kind of thing to court, so you may suddenly hear from your client and if they're unwilling to pay they may at least make an offer.

7. If the client still isn't showing any signs of paying, the lawyer will at this point likely ask for your permission to take this to court. Depending on your jurisdiction this is the start of a long, slow (and maybe expensive) process.

8. Early into the trial, the client may want to make you an offer via their lawyer. It may be worth taking even if the sum offered doesn't fully recoup your losses: the exact values on the invoices are purely philosophical at this point, your goal is to come out of this with some kind of positive result and if you only get enough to pay the legal costs, that may be good enough for you.

9. You win. Or maybe you don't, in which case you have to bite the bullet and pay any additional legal fees you incurred. If your lawyer is any good and you gave them all the relevant information, the outcome shouldn't be too surprising. Even so, it can be a bit of a gamble.

I've actually only had to take an unpaid invoice (two months, actually, plus some short change on previous invoices) to court once and it was painful as hell. We didn't part amicably so the client threatened to sue me for work he claimed I would owe him (which I didn't) and refused to pay the invoices until I did so (which would have cost me about another month of work, unpaid of course).

In the end my lawyer suggested I take his offer because he offered a deal that practically meant he would pay the invoices in full (sans legal costs and late fees) if I signed a statement that I had destroyed or handed over any confidential project files I had left (which I had already done anyway). The alternative would have been a prolonged trial that could go both ways because most of our correspondence had been in person without witnesses. Needless to say the entire ordeal pretty much burned the bridge and neither of us will ever want to do business with each other again. In the end it was pretty much a zero sum game for me, but the reason I took it to court was mostly to make a point for him: I inconvenienced him and in the end he had to make an offer that pretty much reimbursed me for the money I originally asked for without doing any of the work he had initially demanded in return.

To summarize:

1. Stop working and talk to them, preferably in person. Don't plan on getting the money, don't rely on it in any financial decisions.

2. Remain professional and respectful, assume stupidity rather than malice.

3. Collect evidence, document their refusal to pay and your attempts to remind them.

4. Lawyer up. A lawyer's letter head is often enough to make someone talk to you.

5. If you have to take them to court, expect bridges to be burnt. Your business relationship has failed and the trust it is based on (i.e. the expectation that both ends hold up their part of the agreement) is gone.