I just answered a similar enquiry, but from BA to Lima. Here's my suggestion....
I presume you are going to Cuzco, so you should take the bus from Cuzco (or Lima) to Puno (Lake Titicaca) Arequipa. Puno is a miserable place, though a visit to the floating Uros Islands is interesting. Nevertheless I suggest a stopover in Copacabana on the Bolivian side to visit Isla del Sol.
Continue to La Paz.
You now have two options.
1. The desert route through Oruro and Uyuni (salt flats) to San Pedro de Atacama and Antofagasta and then on to Santiago. After Santiago take the transandine crossing as explained earlier.
If you really want a thrill, take the railway from Oruro de Uyuni. Runs four times weekly on Monday, Wednesday, Thursday and Saturday (subject to change). Departs Oururo 3:30 pm. This is one of the few passenger railways left in South America. The train continues to Villazon on the Argentine border.http://www.boliviahostels.com/howtoget/tren.php
This should be a two-week trip.
2. Through Argentina
Follow above itinerary up to Uyuni, then continue to Villazon on the Argentine border.
Cross the border on foot to La Quiaca, then take the regular daily bus (four daily) to Salta. Salta is a lovely mountain town.
I then suggest you either take the transchaco route to Paraguay and Iguassu Falls, or continue down the Andes chain to Mendoza. There are regular buses from Salta to Mendoza.
Taking the Iguassu option is a bit of an adventure. There is one bus daily from Salta across the Chaco to Corrientes on the Paraguay River. It's a semi-sleeper and takes about 12 to 13 hours.
Then regular daily buses to Asuncion and on to Iguassu (Ciudad del Este).
From Iguassu I suggest you splurge on a flight to BA. By bus it is a long, boring drive, almost 24 hours.
This will more probably be a three-week trip.
To the best of my knowledge Canadians do not need visas for any country in South America.