Traveling within Peru is easy and can be quite cheap. There are seven major ways of transportation:
(1) By foot and/or hitchhiking–It is definitely possible, but it does not seem like the most efficient way to travel. First, Peru is a quite large country (it is 2,000 km from its southern to northern border). Second, very few locals own cars, so catching a free ride might be difficult/impossible. Even if hitchhiking, you would be expected to chip in for the fuel. But I guess it is only fair that you would do that.
(2) By taxi–Within cities taxis, are the best option. A taxi ride across town will cost just few dollars ($1 to $10, depending on the distance). In bigger cities there are plenty of taxis, especially at the airports and bus stations. But it is equally easy to catch a cab in the city center and near major tourist attractions. Just do not forget to agree on a price before you get into a cab!
(3) By combis–If you would like to visit some of the smaller cities or villages, likely you will end up using combis. These are medium-size vans and/or buses that operate over short distances, between neighboring villages and cities. This is not the most comfortable way of traveling, but it’s dirt-cheap (under $1 for trips up to 50 km). Combis usually are overcrowded and stop often, but they let you get close to “real” Peruvians.
(4) By road, in a rented car–This is definitely an option, but it seems to be neither popular nor economic to travel that way. Except for the airport in Lima we didn’t see any car rental companies in Peru. However, I just quickly checked on the Internet and found that there are also several car rental companies in Cuzco. They are not cheap, however, as the daily rental price would not be less than $70 to $100. Fuel in Peru is expensive as well: it costs twice as much as fuel in the US.
(5) By bus–In my opinion, this is the most efficient and cheapest way to travel in Peru. There are multiple privately operated bus companies in Peru, all of which offer remarkably low fares by Western standards. For example, even a long-distance (about 470 km) overnight trip from Arequipa to Cuzco in a high-end bus costs only $35. The same trip with a cheaper operator likely would cost not more than $13. During our trip we sampled several bus companies (of varying service and price levels) and all of them were excellent. The buses were always clean and on time, and the seats were comfortable and reclining. The high-end bus companies offer excellent onboard services as well, such as video entertainment and food (no vegetarian options though!). For local trips, you can buy tickets on the bus itself, but for the longer overnight trips, it's best to buy tickets in advance directly from the bus company offices (e.g., located at bus stations). Most long-distance buses run during the night, but I would recommend that at least once you take a trip during the day, as the scenery outside is amazing! (Just to get an idea, take a look at my photos below, all taken during a single bus trip from Cuzco to Puno.)
(6) By train–The railway network is not well developed in Peru, and in many places it seems to be built especially for tourists. For example, Peru Rail only operates two routes (and variations of them): one from Cuzco to Machu Picchu, and the other from Cuzco to Puno/Lake Titicaca. (Shockingly, a one-way ticket to Machu Picchu costs between $56 to $300, and a similar ticket to Lake Titicaca sells for $220.) Train aficionados might be interested to know that the second highest (and until 2005 the highest) railway in the world is located in Peru. It is the Lima to Huancayo route, which crosses the Galera summit tunnel under Mount Meiggs at 4,783 meters (15,692 ft) above sea level. (Be aware, however, that the train runs only twice a month. On a positive note, this train is not as expensive as the trains departing from Cuzco. You can get a one-way ticket for $30.)
(7) By plane–It is possible to fly between major cities in Peru (Lima, Cuzco, Arequipa, and Ica are all well-connected), as well as between some of those cities and the Amazon Jungle (e.g., during the dry season there are several flights a day between Cuzco and Puerto Maldonado, and between Lima and Pucallpa). Sadly, it is a quite expensive way of traveling, as foreigners get charged two to three times more than locals!
(8) By bike/boat/skateboard/paragliding/etc.–I’m sure all of these are possible as well, but I do not feel competent enough to comment on them. Good luck to you, anyway!
Some cities in Peru, e.g., Juliaca, bear remarkable resemblance to Indian cities... They just don't honk quite enough in Peru ;)
A comfy ride in a Peruvian bus:
Beautiful landscape outside the window:
A first glimpse of Lake Titicaca: