Nothing works as well as paying everyone for their work, or doing it yourself.
If that's not an option, then design the projects around the pitfalls of not being able to pay people:
- Keep the projects small, so that even a small contribution is a significant step towards finishing, and so that the project can get done before people get bored.
- Keep the design, art style, writing, coding, and everything else simple. This increases the likelihood that someone just dropping in to help can finish everything, and it makes it easier for multiple people to work on the same task seamlessly in case you need to replace someone who dropped out.
- Use a common engine, and employ other commonly-used tools. Ask for assets in common formats and sizes. No one wants to spend time catering their workflow to unique demands.
- Design for familiarity. Save the really novel ideas for when you can afford to get them done right. There's no shame in it! Use familiar genres and styles so that your project is easier to explain (the less you're paying, the less people are willing to read), and so that you're more likely to come across people who've been curious to try their hand at [whatever]. Plus, this'll make it easier to find free pre-made art you can use. Be prepared to use stock art, sounds, and code at least temporarily, but also likely in the final version.
In addition:
- Do as much of the project as you can by yourself. Don't be afraid to try learning new skills, even if you can't master them. Plus, the closer a project is to completion, the easier it is to find people willing to stick with it without payment.
- Use placeholder assets from sites like OpenGameArt for anything that isn't already done, even if it's not a perfect fit. It's much more encouraging to see a playable game with a list of assets that could use replacements than something that's a nebulous collection of partially done art and systems that don't add up to a game.
- Break down all the work into tiny, manageable tasks that are clearly described somewhere public. Instead of "graphics", have a task for each individual animation, each set of related background objects, each set of tiles, each sound effect, etc. Do this even for the tasks you intend to do yourself. This way anyone can drop in and contribute, and everyone is easy to credit because each task will have one person who did it. In addition, writing everything out like this makes it easier to see when your project is getting too big, and can help you find things you can cut. If you do revenue sharing, this task list can also make it easy to distribute the pay, since you can treat the tasks as equal and easily see how much work each contributor did.
- Remember that while money is the simplest method, it's not the only way to pay someone. Trade your skills for the skills of others. If you're an artist who wants a programmer, then find a programmer who needs an unpaid artist for a game of their own, and do art for them in exchange for coding on your project. Design some logos and t-shirts for a musician in exchange for music. It can be hard to arrange trades like this since it's not common for both people to need each other's skills and styles, but don't discount the possibility.
- Whenever possible, help with someone else's project instead of starting up your own. That way there'll be someone else driven by passion, someone you can rely on more to not quit easily, and you'll likely build up good will with them.