First, let me say that no cat will love you like a shy cat. Winning the love of a shy cat is not only rewarding, it means that you will have a devoted, loyal friend for life. My friendly cat loves everyone, including me, my shy cat loves only me. Watching him grow into a confident cat who likes to greet company, play with our dog, and sit on our laps on the sofa has been one of the more rewarding experiences of my life. In three years he went from hiding under the bed for six months to begging strangers to pet him. Depending on how shy your cat is, you can skip a lot of steps. My husband and I work with ferals, who have never been exposed to people and will not let you touch them, so I start there. Invest in rescue remedy and feliway diffusers. They are all natural, do not need a prescription, will not hurt your cat and can really help reduce their stress levels.
With a feral: start out with the cat in a crate. It will make your life a whole lot easier. Initially do not try to handle the cat. Spend time in the room with the cat watching tv, reading a book, doing work whatever. Let the cat get used to your presence without having to worry about you sticking your hands in its face and pet it. By not handling the cat you'll teach it that you're pretty ok and your presence can be tolerated. Talk to the cat, play the tv low and maybe leave a radio on for him so he can get used to human noises. Make sure that the cat knows that food comes from you. Don't free feed, give the cat several small meals a day. One of the best ways we've found to socialize kittens is to buy chicken baby food without garlic (some cats are allergic) and to let the kitten lick it off of our fingers. We won a feral kitten over in about two hours by doing this. DO NOT MAKE EYE CONTACT with a feral cat. Eye contact shows dominance in the land of cats. We developed the "blinky game" with our feral, where every time we made eye contact we would blink at him and lower our eyes to let him know he was in charge and we respected that. To this day he loves to blink back at you, it's one of his favorite games (my cat is weird, I know). We have also had success with taking clothing we have worn that smells like us, and leaving it for the cat to snuggle with. This lets the cat get used to your smell, which will help him decide he likes you. Cats are also nocturnal, so when the cat is ready to explore, a room, the whole house, whatever a good time to let them do that is at night when the people are sleeping and they're feeling outgoing.
Shy cats often build confidence by seeing you with another cat and by having another cat to follow and emulate. After all, if other cat trusts you and lets you pet him, you must be pretty darn awesome. I have broken my slow introductions for cats rule several times in the past because the foster cat was shy and just needed another cat to make him feel ok. This can work, but be sensitive to your situation before you decide to try it. Feral cats in particular are only used to other cats and may need another cat to show them the ropes.
A lot of shy cats love toys. Interactive toys like the feline flyer and cat dancer give them something that will distract them while they are around you, making them feel more ok with you. It also gives them a confidence booster which can be really valuable and important. Mostly, be patient. Depending on the cat, I will force them to let me hold them or rub their chin just so that they realize they like being petted. Most of the time I try to let them approach me on their own, then gives treats and rubs as a reward for initiating contact. With shy cats you'll also see that they tend to improve in spurts; so they'll be the same for 3 or 4 weeks then one day start jumping on the bed to sleep with you. If you're consistent with them and keep showing them that people are good and worth trusting, they'll come around. And as a quick disclaimer, a cat that seems shy in the shelter is not always shy at home. The shelter can be a loud, overwhelming place with lots of strangers. Give a shy cat a chance and you won't regret it!