First off, I'm giving general info, not legal advice; I can't give specific recommendations without seeing your file.
The first thing to do in this situation is to turn verbal follow-ups into written ones. Saying "it'll be done this week" on the phone has no evidentiary value. Summarize every subsequent meeting via email: "in today's meeting, it was stated that delivery will be made on [date]."
The second step is to check what the contract stipulates for delays. If there's a penalty clause, you usually need to put them in default first, i.e., send a proper formal notice. The content and timeline of this notice are important, don't just download a template and send it.
The third step is to secure what you have: request the delivery of the existing code, database, and design files if any. This is the most common thing lost when disputes escalate; it's much easier to ask while the relationship is still good.
If you're thinking about handing it over, this third step is essential. If you don't have working code in hand, there's no handover, just a rebuild.