First thing is to be honest with him about the situation.
Jack, we have always been happy with the product you deliver and would love to work with you more. Our biggest problem is that things are never delivered on time. We can only agree to work with you if you can assure that you will be able to meet the deadline.
You also need to make sure that any deadline you are setting is reasonable to him and not just dictated by you. The problem in the past may have been that you set deadlines that he is simply unable to meet. (I don't know if this was actually the case for you, but it's still good practice in general.)
If we ask for a deadline that you think is unreasonable, then please let us know! We would much rather know a realistic estimate upfront than have you just agree to what we ask and then be late.
You can even add an ultimatum if you want, assuming you can follow through with it.
If we get a late delivery from you again, we will not be requiring your services anymore.
If you give the ultimatum, he's late, and then you hire him again, then he'll know that he can be late with no consequence. I also assume that you aren't paying him in full until you get the final delivery, otherwise there's no incentive for him to be on time at all.
Lastly, you can do a little preemptive damage control on your end by giving him a deadline that's earlier than when you actually need it. If he's usually about a week late, then tell him you need it a week early. If he successfully delivers to you on time, you can slowly move the bar back to normal, if you want. Or just leave the bar early for when he inevitably relapses (and he will. It's just a question of how much you can put up with it.)