An increasing number of travelers take the bus from Lima [1] to Arequipa [2] and stop along the coast at Paracas, Ica, or Nasca before heading up to Lake Titicaca [3] and Cusco [4].
Bus companies in Peru offer extremely comfortable double-decker buses with nonstop itineraries and VIP service including 180-degree reclinable seats, food, and WiFi. Traveling by bus on these routes is completely safe.
Because of the dramatic changes in altitude between Peru’s coast and highlands, staying at least two days in Arequipa before continuing to Puno or Cusco is a must. At an elevation of 2,300 meters, Arequipa is a good place to acclimatize before heading to Lake Titicaca (3,800 meters) or Cusco (3,300 meters).
Travel options between Arequipa [2] and Puno [5]—a five-hour drive—include a wide variety of good buses too, with comfy seats on a very good highway with breathtaking views of the Reserva Nacional Salinas y Aguada Blanca.
The travel options between Puno and Cusco include the Andean Explorer, a deluxe train service with excellent views, or a high-quality tourist bus has the advantage of stopping at a string of interesting ruins along the way.
Travelers with less time can also fly between Arequipa [2], Juliaca [6] (an hour away from Puno), and Cusco [4].
Lake Titicaca [3] has an increasingly fair share of tourist traps these days. Puno [5], the gateway city, though quite grimy, is the starting point for most of the off-the-beaten-path adventures, such as kayaking in the lake, arranging homestays on Taquile or Amantaní island, or the lesser-known Anapia and Yuspique islands or in the Península de Capachica.
Traveling by bus on either shore of Lake Titicaca and stopping in towns along the way is another interesting option.
The best time to visit is between March and November, the sunny winter months. Bring lots of warm clothing for the freezing nights and a wide-brimmed hat and sunscreen for the intense sun.
Links:
[1] http://www.moon.com/destinations/peru/lima
[2] http://www.moon.com/destinations/peru/lake-titicaca-and-canyon-country/arequipa
[3] http://www.moon.com/destinations/peru/lake-titicaca-and-canyon-country/lake-titicaca
[4] http://www.moon.com/destinations/peru/cusco
[5] http://www.moon.com/destinations/peru/lake-titicaca-and-canyon-country/puno
[6] http://www.moon.com/destinations/peru/lake-titicaca-and-canyon-country/between-puno-and-cusco/juliaca