You are describing the exact route we took last summer. We loved it!
From Zurich, take any SBB train to Chur. Chur is a lovely town in the foothills of the Alps. It is in the part of Switzerland where they speak Romansch, but German is the actual language of the street. Spend an overnight in Chur. We can recommend the Ambiente Hotel Freieck, on a nice park and within easy walking distance of the train station.
The highlight is the Bernina Express from Chur to Tiranno, Italy. It leaves around 8:30 am which is why you should spend an overnight in Chur, but you can make it if you want to take an early morning train directly from Zurich. This train has panoramic windows to enjoy the Alps as you pass up to the top at Alp Grum, before descending down into Italy.
In Tiranno, you walk out the SBB (Swiss Rail) station and walk across the piazza to the Trenord (Northern Italy Rail) station. From Tiranno, there is a regional train timed to connect with the Bernina Express. The Trenord train passes down the Sondrio valley before running along the entire edge of Lake Como. You can get off at Varenna, Lecco or a number of other stops, depending where on Lake Como you want to go.
The Trenord train then continues to Milan, where you can transfer to any Trenitalia train to Venice. In Venice we liked the Pensione Guerrato, near the Fish Market and Rialto Bridge.
I agree that it is hard to make this a loop, but then nowhere to Venice is a loop because Venice is an island at the end of the train line. A possible loop back (depending on how adventurous you want to get) could be up through Croatia and Austria and back to Switzerland. Another way would be to double back to Milan and then go back to Switzerland via Lugano (the Italian-speaking part).
No matter what details you decide on, you have made a great choice of destinations.