It's a tough one.
What almost all tradesmen do is to be frightened to turn work down even though, if they thought about it, they can really only do one job at a time.
So they take on three or four, and run between them - you can rest assured that the time they were not with you, they were finishing (or starting!) somewhere else.
Without a verbal agreement, you are in a bit of a difficulty so -
Get the guy on the phone, and explain that you don't want the job to drag on any longer. Tell him you want a finishing date from him - and be reasonable based on what they have left to do.
Tell him you expect workers there all day every day until you are done, and you will pay the agreed fee on completion but -
any delays for what ever reason (and make sure they can always have access during the working day - say 08:00 - 17:00 - and you sill deduct £30 per day or part day from the agreed fee.
If he refuses - and if he has jobs on, ne may do, then offer him fifty per cent of the fee for the work done, and get someone else in to finish. the threat of that may make him back down - be firm, and don't be intimidated - you are the customer, he is the worker.
You see, all builders and tradesmen work on the basis that everyone (including their customers!) is trying to rip them off - so they try to get in first, which is why they behave this way.
beat them at their own game - be reasonable, but don;t let them have an open-ended contract or they will simply use you as a 'fill-in' between jobs where they are under more pressure to get finished.
And the lesson? A written agreement in advance signined by both of you with a start and finish date, and a price. then if they start messing around, you can threaten to withod their fee, or part of it, because you have a written contract and you can threaten them with court - usually does the trick, they hate co