A practical consideration might need to take precedence over a purely legal one here. The obvious answer to your question ("Can he do that") is clearly "No".
Your contract with him was for him to do 'x' amount of work, in return for 'y' amount of money. At the moment he's not completed 'x', so you don't yet owe him 'y', and you won't until he's finished the whole job with no additional charge. (The fact that he's erroneously done unwanted work elsewhere is irrelevant).
However if you simply say "I'm not paying any extra for you to finish the work" he's obviously going to say "Tough, I'm not going to do it". So you'd then have to pay someone else to finish it, meaning that you'd be out of pocket either way.
You could then take him to court, through the small claims procedure, to try to get back the excess money you'd had to fork out but that's doing it the hard way. It would be far simpler to let him finish the work (believing that he's going to get paid extra for it) and then to only pay him the amount which you'd originally agreed.
That would leave him needing to sue you, which he'd not be able to do successfully as you'd be able to rely upon your original contract for your defence of any such action.