No matter what else you may pay for when you hire a developer, you will always be paying for these two things:
1) Their time. Every developer I know is busy, including myself. That means, in order for something to be good enough for them to stop whatever else it is that they are working on, you need to be willing to make it worth their time. This may be that the project is particularly interesting to them or it may be monetarily. Either way, you will be bidding on their time against any number of other projects that are already attracting their attention.
2) Experience. By hiring a developer, you are making a leap of faith that they know what they are doing. Generally speaking, experience coincides with cost — you won’t find many (if any) experienced developers working for cheap. The market tends to work these things out naturally — an inexperienced developer, overpricing their work, will end up breaking something or getting in over his/her head and will end up getting negative feedback of one form or another and lose clients.
The more you are willing to value these two things in a potential developer, the better the developer you’ll end up with. Anyone can write code, but not everyone comes with the experience and expertise to write good code. If you are unwilling to apply value to your potential developer’s time and experience, you are unlikely to end up with a very good developer.