I recommend Cusco, because thats where i went!!
Spanish schools that i know of and can recommend are Maximonivel (more expensive but VERY good program and activities) San Blas Spanish School (great location, nice people, average cost) and Bruceperu (not for profit, all funds go to helping street kids, a very good cause and cheap too, plus they run lots of other activities). All 3 have web sites so just look them up.
Cusco is a fabulous city and well worth 2 -4 weeks there.