"day 1 - Heidelberg to St. Goar (Heidelberg to Bingen & then K-D line ferry to St Goar, stay at hotel) (Explore Bacharach, Oberwesel, walk to Rheinfels castle)"
You have planned too much for this day.
It will not work well for you to tour Rheinfels and to explore both Oberwesel and Bacharach on this day. The train ride to Bingen via Mannheim and Worms which Sam suggests is 2 + hours. I'm finding departures on my choice of dates at :42 or :43 after the hour. Let's say that after breakfast you left H'berg on the 8:43 train, which puts you in Bingen Rhein Stadt at 10:56, and which means catching the 11:30 K-D line boat from Bingen. And let's say you take the boat straight to St. Goar without stops (arrive 12:55), check in at your hotel, find lunch, then walk up to and tour Rheinfels Castle. By this time it's at least 16:00 - even without having set foot in Bacharach and Oberwesel, much less "explored" them. And if, on the way to St. Goar, you DID choose to leave the cruise boat to explore them, you have two problems... 1) the luggage that you are carrying - ugh - and 2) the skimpy boat schedule. Getting off in Bacharach means a required 3-hour stopover there, and in Oberwesel you'd have a 2-hour stopover, with final arrival in St. Goar at 17:55 - and - whoops - while you were toting your bags around these towns over 5 hours and cruising, Rheinfels Castle closed its doors.
"day 2 - Explore + Rhine valley cruise"
You are confused, I think... The "Rhine Valley Cruise" and the "K-D-line ferry", as you call it, are the same thing. KD operates cruise boats, not ferries. You don't need to cruise today if you cruise Bingen - St. Goar, the best part of the river, on Day 1.
So I would re-organize your trip a bit...
Day 1: train to Bingen, cruise to St. Goar, check in, visit Rheinfels Castle. If by late afternoon you still wish to spend some late time in Bacharach, it's only 10 minutes away by train. (You can get a train back to St. Goar until about 23:30 or so.)
Day 2: Explore by train... You could visit Oberwesel, Boppard, and/or Braubach (Marksburg Castle!) very easily from your St. Goar base. Oberwesel is 5 minutes by train from St. Goar, Boppard is 15 minutes to the north. If you visit Braubach, use the real ferry to cross the Rhine from St. Goar over to the east bank train station in St. Goarshausen + a 20-minute train ride to Braubach. The ferry runs all day, and trains to Braubach are hourly or better.
Boppard
Boppard chair lift
Gedeon's corner (a short walk from the chairlift)
Braubach
Braubach town map (DB = station)
Marksburg, an intact medieval castle
Walk around Oberwesel
What if you don't have a spare railpass day for these train trips?? You can get a cheap all-day VRM day pass that covers the St. Goar ferry and all your trains from a ticket machine at the St. Goar train station:
http://www.vrminfo.de/en/tickets/tickets/ticket-offers/leisure-ticket/