It really does come down to contacts.
I've been in the IT field for about 9 years and I've been doing contract software development for about 5 years. Over the years, especially in the contract work, I have come in contact with many different people. All of these people remember my work and me, so when it is time for me to find another contract I can turn to these people to point me in the direction of work.
Even now that I am trying to settle into a contract job as a perm employee, I still get phone calls from people looking for developers who do the kind of work I do. I don't even have my resume posted on the internet on any of the job search web sites... people just remember me from past work I did and call. Others who I don't know have been referred to me by those who do know me.
I'm not going to pretend that getting to this point is easy... it is NOT. It requires years of good work to develop a good reputation.
It's a small world and everyone in a given field of work knows each other and they all talk to each other. If you do good work, everyone will know about it... if you do poor work, everyone will know about.
When I applied for my current contract position there were about six candidates submitted by a recruiting company. The supervisor of the company who needed a developer was going to interview all of the candidates until he saw my name on the list... at that point he called the recruiting company and told them to call off all the interviews because they want me.
Contacts and reputation... that is what got me my current job.