The shuttle bus is the best way to do it safely, and the cost isn't too bad. The only downside is they use the Van Wyck, which is always gridlocked unless it's 0200.
The fastest way is to use one of the car companies. A lot of the crews use Sureway. They give a crew discount- I think it's around $18 airport to airport. They will take the fastest route, including side streets and the sometimes the shoulder! The drivers seem like they're all former WRC champions. Wear your seat belt! It's a wild ride. I've seen them make the trip in a little over 20 minutes!
The cheapest option is to use public transportation. From JFK, take the Airtrain to Jamaica Station, then take the 'E' Train to the Jackson Heights/ Roosevelt Ave station, and finally the Q33 bus, which will drop you off right at the terminal in LGA. You get one free transfer with a Metrocard, so the total cost would be $4, but you're looking at around an hour enroute.