Question: I've been told that I am to be a team lead of an upcoming project. I've not ever been team lead before but the responsibilities are what you would typically expect, with revolving door of 3 to 4 other developers through the 8 or 9 months it takes to complete the project.

My problem is this: one of the developers who will no doubt be working on this project will be a problem. He has more experience than me, has called me an idiot several times in the past, and has told me that he has taken this job because he is a natural leader. He has expected to be promoted to a leadership position with every new project (which has not happened to date), and even once told me that I was to report to him, even though the actual team lead was under no such illusion. Moreover, I've both observed and heard from others that he is extremely unprofessional (watches non-work videos at client sites - with no head phones, dresses unprofessionally, comes to work late, makes inappropriate jokes, etc.) He took or attempted to take credit for my work or insights multiple times while I worked with him as a peer. My current team lead told me that she threw out 1/2 of this guy's code once he left her project because the quality was no good. I could go on.

My fear is that this guy will actively work against me, because he will resent having to report to someone that he considers an inferior, especially since I have been given this opportunity before him. I've successfully dealt with this type of personality as a peer or even reporting to managers like this in the past. I've not dealt with, or ever thought about, having to deal with this type of character who is reporting to me. 

My question is: what kind of strategies can I use to effectively and professionally deal with this? Especially now, before it has become a problem, is there any way to cut it off before it gets out of hand etc. If anyone has a similar experience how did they deal with it?

Answer: 
Some good answers here but for me there's a fundamental issue that nobody has addressed: you've decided what this guy is going to be like on your project before it's even started; you're judging him on something he hasn't done yet. While it's very much worth having a strategy for dealing with problems you might encounter with him in your back pocket, it's ESSENTIAL that you give him a fair chance and treat him the same way you do the rest of the team. Don't single him out, don't assume it's going to be a disaster, do think positive.

If you convince yourself that your project is doomed to failure, whether it's because this guy is on the team or for any other reason, then you can pretty much guarantee that it will indeed fail. For a project to succeed you have to believe it is going to, you have to believe in yourself and you have to believe, and trust, in your team. Above all you have to be fair.
I have also seen this type of job. Some people have extra talent and obviously have risen to a high position, but you have to remember that he is older than you. 

So respect him. But never forget you are the team leader and you have to manage your team. You have to maintain a proper understanding between team .//// and go on.