I'm wanting to travel from La Paz, Bolivia to Puno. What's the best way to do that?
For most travellers, there's really only one logical way - the bus. The airport is 50km away in Juliaca, and generally you fly from Lima.
I did this trip by bus back in 2010 - the 'fast' option around the lake, and you can read my brief bit about it on my blog.
From the Article on Wikivoyage:
Daily buses depart to and from La Paz, Bolivia on two slightly different routes.
Direct route via Desaguadero (the fastest route, about 5 hours taking shared taxis).
To do this, take a bus from the terminal or a shared taxi to Desaguadero (2-3 hours, most buses leave before 10am) and after getting your passport stamped on both sides of the bridge, you can take a bus/minivan/shared taxi to La Paz (10/15/25 Bolivianos, 2-3 hours, much faster and more comfortable by shared taxi). If you want more space in the back you can pay for an extra seat. Border formalities are quite quick, but you might want to take a bicycle taxi to avoid walking a long way from the bridge to the transport on either side. You can change money here at one of the stalls outside Peruvian immigration - it's best if you know the exchange rate in advance.
Via ferry boat across Lake Titicaca and Copacabana.
You should change some money at the border in order to be able to pay the ferry in Bolivianos. Be prepared to change buses in Copacabana. This will mean you will lose your good seats.
When the overnight bus to Cusco stops at the state line for the police to inspect cargo underneath the bus, get out and watch your luggage to avoid theft. Ormeños has buses leaving Puno between 8am and 9am every day. The departure time depends on how long the bus takes to arrive from Lima, so it is necessary to call Ormeños in Puno or Arequipa at about 7am to find out what time the bus will be passing through. The price is 100 Soles per person and the journey should take about 6 hours.