We just went through this with our 2 1/2 yr old and it was much easier than expected. However before you begin make sure you have the resolve to follow through in the face of 1-2 days of protests and possibly not drinking. Unless your child has a medical condition this poses little threat to their health.
We starting by all having milk/juice/water out of the same Born Free training sippy cup each night a dinner (it has a soft spout like a bottle) and "cheers"ing before each sip. It became like a game. We did this for about a week until we knew our DD was capable of drinking from the cup, even if it was just one sip a night. During this we rarely got more than a few sips in her but we knew she got the idea.
Then we packed up all the bottles and gave them to our neighbor with a baby. I had heard about doing this and tried many times before to no avail. THis is not the solution itself but you'll be suprised that it makes it easier for your child to accept loss of the bottle in the next step.
Finally you have to dive in and yank the bottles cold turkey. FIrst explain that they are a big boy/big girl and ready for cups and that the baby really needed all the bottles. Offer the Born Free cup in place of your usual bottles. With my DD we started this process on a Saturday morning. SHe had virtually nothing to drink Saturday but then woke up Sun morning, grabbed the cup I handed to her and drank the whole thing. After 1 1/2 years of my worry her thirst overcame her objections (my pediatrician had been telling me this for sometime but I think I had to believe is first before any attempt would be successful. You can movce to the Born Free hard spouts once they're used to the soft spouts and then eventually phase in straws/cups.
BTW I tried every other short cut in book previously to no avail. I've come to appreciate that with toddlers it just takes resolve to tackle things head on.