To me, this question is very similar to how do I attract customers to my business? except instead of cash, you want contributions. Successful salespeople deeply understand their customers' needs and tailor their services to address those needs. It's a very powerful method: put yourself in your potential contributors' shoes, and ask what's stopping you. Many things will become obvious in this light.
Keep the lights on
I find the most common reason people don't contribute is simple: no one's home (or it seems so). How can contributions happen if there's no one at the other end receiving it?
Show activity if you have any. For projects I care about, I love reading developer logs and other related blog posts. It shows that there are people also passionate about the project, that I can talk to. Talk about what you're working on now, not what you've shipped a month ago. This is important for potential contributors, and is an unnatural skill for most developers, since they may have been burned by over-promising in the past. One of the biggest obstacles for new contributors is not knowing where to start. Well, here's one way you can not only give people a glimpse of the inner workings of the project, but also where they can contribute.
How you show off your activity will depend on your target audience and what you can bother with. The most obvious is having a website. GitHub for example provides free light-weight web hosting and blogging, but there are many others. You could also use social media like Facebook, Twitter, IRC, mailing lists, web forums...
But if you're not actively working on the project, it's not all bad. Provide easy ways for people to get in touch. If I find no one home but I still want to contribute, I'm going to touch base first instead of spending a week preparing a pull request. Have a public issue tracker. List an email address, or social media handles. Provide a comment section. Maybe forums or IRC where you hang out. Whatever it is, list it clearly and respond promptly. Few things put off potential contributors more than seeing unanswered bug reports from months ago!
One point worth making is that you should prefer open channels for communication. E.g. if appropriate, put it in the public issue tracker rather than private emails. This has many advantages: it shows activity (hey look, there are other people contributing), and it discourages cliquish behaviour once more contributors join (although that's a problem you wish you had). On occasion I've reposted IRC chats or emails on the issue tracker for these reasons.
Why do people work on free software projects?
This is not a trick question. Most people intuitively think the answer is "resume-padding", or to "write good code", and they are wrong. Instead:
We find in contrast, that enjoyment-based intrinsic motivation, namely how creative a person feels when working on the project, is the strongest and most pervasive driver. We also find that user need, intellectual stimulation derived from writing code, and improving programming skills are top motivators for project participation.
-- Why hackers do what they do: Understanding motivation and effort in free/open source software projects, Lakhani, Karim R., and Wolf R.
For me to willingly contribute to someone else's project, I'd want to be able to work creatively on a problem I find interesting, challenging, or that addresses one of my needs (or my itch). The last thing I'd want to work on is an uninteresting, strictly-to-spec task to be judged by an opinionated or rude maintainer. After all, most people who do that get paid, in day-jobs!
When you're hungry for contributors, you need to put in extra effort to appear approachable, and once in contact make them feel welcome.
One of the best and often overlooked ways to do this is to show appreciation. Say thanks! It's the bare minimum you should do, for anyone who reaches out. "Thanks for your interest!" Treating users as potential contributors is a good attitude and start. If someone contributes a killer feature, the additional success of the project is reward enough, but that rarely happens. I don't want my contribution to simply wither away in the commit logs. Yes, non-trivial code changes mean you have to add contributors' names in the copyright notices, but that's out-of-sight. Does your project have a "credits" or "acknowledgements" section? What about other communication channels? One of the best acknowledgements I've received for contributing features was being mentioned by name in a blog post, as an example. What this also does is it shows future contributors that they will be acknowledged.
But external motivation may work too. Not all projects have interesting and easy tasks to do, and you probably want to work on such tasks yourself, which is fair enough since the project is yours. But it does leave a backlog of interesting-but-hard, or simple-but-tedious tasks that no one wants to do, especially new contributors. I've wondered whether a bounty for such tasks can attract new contributors to an obscure project, and I'm happy to report that it does, at least in the one time I've tried it. It did take one month after the bounty post for anything to happen though, which leads to my final point...
When a project is run by volunteers, things happen at an unpredictable pace. Motivation comes and goes, real life happens. Sometimes you'll be actively updating a project for months with no acknowledgement from the outside world, others you'll get a flurry of contributions on a project you've abandoned years ago - I've been there, on both ends. Be aware it's the nature of the beast, and most things just take time.