Finding a good, reliable web developer can be like finding a good, reliable mechanic. They exist, but they're not always easy to find. There are plenty of reasons for this, ranging from the fact that many good developers don't need to solicit new business to the fact that it's hard to spot someone who is technically competent when you're not a developer yourself.
As difficult as it may be, finding a good developer isn't impossible. You can spot whether the developer you're considering hiring, or have already hired, is a 'good one' by looking for the following things.
He or she:
Is responsive. I've seen it time and time again: clients who hire a developer that is less-than-responsive during the courtship process, only to find out that when the project begins, he or she is even less responsive. It's not surprising: if someone is less-than-responsive when they're trying to win your business, why would they be more responsive after you've given it to them?
Has references. Unless you're specifically looking for someone who is new to the business (for whatever reason), a good developer will be ready and willing to provide solid references to you.
Has a portfolio/CV. While it seems like a no-brainer that a developer should have a portfolio or CV, you'd be surprised at how many clients I've encountered who have hired a developer based on a few simple words easily muttered: "sure I can do that."
Gets down to business. Serious developers will ask you to sign an agreement (if you don't present one yourself) and bring up payment terms as soon as your discussions get serious. Sometimes individuals who haven't been in the client role before will be scared by this, but it's actually a sign of a professional.
He or she:
Treats you like a customer, not an annoyance. Anyone who you're going to be paying should treat you with respect. After all, you're paying their rent. If your new developer starts acting entitled and like he or she is doing you a favor, watch out.
Isn't interested in nickel and diming you, but lets you know when you go out of scope. As a developer, there's a fine line between being unreasonably stingy (and unhelpful) and permitting a client to go too far. Look for a developer who doesn't have a habit of saying point blank "that can't be done" (few things can't be done), but who also isn't afraid to tell you when something is out of the agreed-upon scope.
Keeps you up to date. You should not have to chase down your developer to get a status report. Obviously, you probably don't need a status report every other hour (you don't want to be a legitimate pest) but a good developer will be proactive in letting you know where things are at, especially when milestones are approaching.
Delivers, and on time. Needless to say, a good developers will deliver what you asked for within the agreed upon timeframes. This said, I've met more than a few people who continue to work with developers that don't always deliver an on-spec product or on time.
At the end of the day, finding a good developer requires that you have certain expectations. Obviously, expectations will vary depending on your needs, and your budget. But if your expectations aren't met, your search should continue. Don't settle for mediocrity.