When we went we took the overnight bus, Departs Cusco around 10:30pm and arrives around 6:00am, so yes it is long (approx. 7-8hrs.)
You can also fly to Juliaca then 45 min by bus to Puno, this is also where I believe Gringo B is suggesting you return to Lima from.
By taking the overnight bus, you can essentially gain a day, you could see more of the local sites on day 6, overnight to Puno on the bus, and still do Lake Titicaca on day 7.
Another thing to consider is one way flights tend to cost more than round trip, so if you want to save some money, you could do a round trip Lima/Cusco by air, Overnight bus to Puno on the evening of day 5, Lake Titicaca on Day 6, Early bus returning to Cusco on day 7, Day 8 fly Cusco to Lima.
If you do decide to take a bus, they are fairly nice here in Peru, just make sure you get a Cama or Cama Cama, these seats almost fully recline and are usually quite comfortable. Additionally do some research on the bus companies as some have bad safety records.