Have measurable milestones. Perhaps this tale will help...
A friend of mine  got into a project over his head. Originally, he got me to help him over the weekends, and when that wasn't enough, got me brought onboard officially (part-time at first). He had been claiming in status meetings that he was working on parts of the application that folks were unable to get to . When I got on the project, I started working from the front end of the website, wiring up the stuff that he told even me were partly done. It became blindingly obvious that he wasn't doing the work and was billing 40 hours/week and doing nothing . Within 4 weeks he was terminated from the project. Because they were threatening to sue him to recover the funds wasted , I promised to finish it even when the money ran out.
It's like they say "Oh, there is no problem" or "some things are ahead, others behind, don't worry." Or just will not acknowledge the lateness or that it might be a problem.
This friend is really good at blowing smoke up people's rear ends. And what you're saying sounds identical to stuff he said in meetings.
What would have prevented this from getting into such a bad state that lawyers were involved:
1. Being on-site more than 1 day per week would have prevented him from multi-jobbing. Remote working is acceptable if there is progress. When the progress stops, there is a reason behind it and not a good one.
2. Measurable milestones. Feature X needs to be done by date Y. And hold folks to it.
3. Bugs fixed in a reasonable amount of time. When a bug gets reported, it should be fixed in a week or less.
4. An issue tracking system so that you can keep track of whether stuff is fixed or not. No more he-said/she-said meetings going "no, I fixed that bug last month. No, the bug is still there."
5. Have the QA people working in parallel .
To make it more difficult, the consultant is across the ocean from me
Keep re-opening bugs and tasks that are not fixed. If necessary, include screenshots and test data to show what things needed to be vs what they are. Maybe your workers don't care, maybe they're billing several people for the same time
1 - I've known him for 7 years and have worked with him off and on over those years. Until 2009, I thought he was a very professional person who was very good at finding jobs and being able to work remotely. I'm 5 years younger than him (and we're both in our 50s), and have never been good at finding jobs, and I'm terrible at working remotely (to the point I'll only do it when weather makes it impossible to get to the office). He's since moved across the country, so that I'm not coming over to have dinner with him several times per month.
2 - One had to log in, then there was a main status screen (partially done), then a details screen (undone) and a bunch of tax screens after the details. He'd claim to be working on the tax screens which no one could get to.
3 - He was billing them 40 hrs/week, and 2 other jobs 30hrs/week each. His mortgage reset and his monthly payments had shot up about $2k/month and he was unable to refinance that boat anchor. His high maintenance wife was still refusing to get a job. He was working about 10-12 hours per day.
4 - The project was more than a year late, they had already doubled the budget. What this website connected to was also more than a year late. The company that had been doing the CRM system this was connected to had to pay for the multimillion dollar cost overruns they already had incurred. The client is a federal agency and if they decided to blacklist the contracting company, then that guy is out of business. I'm going to be able to use this project as the Pole Star of "What Not To Do™" for the rest of my life.
5 - There were bugs that were discovered a year later because no one had actually used a couple of forms, even though the subject matter expert signed off on everything. Is it my fault the page never worked from day one? Yes. Is it the SME fault for not even visiting this page at all? Yes. There was more than enough blame for everyone involved.