I caught the sleeper train from Euston to Inverness, leaves around 9pm I think and arrives in Inverness around 8.30am ready to catch the train to Thurso a couple of hours later. Providing you book the full 12 weeks in advance, the prices are very reasonable. I paid £61 for the sleeper and £11 for the train to Thurso. Really enjoyed the sleeper and managed a pretty decent nights sleep. All told the journey took just over 24 hours from North Dorset to the campsite in John O Groats. Train back from Penzance was very easy for me and didn't seem to make much difference to the price however far ahead you booked it, so I only booked it the day before.