There is a sleeper train departs Shenzhen about 1700 and arrives Guilin at about 1000 next morning. I went with Concorde Travel, try calling them on 2526 3391 for the updated price.
Go without the agent it will be more fun.
You could flight from SZ or GZ to Guilin, for return tickets it will only cost around 1000RMB.
Once you get to the Guilin airport, take the airport bus to downtown (around 30 mins) and then take a bus to Yangshuo from there (around 45 mins), the bus stopped right at the west street where all the hotels, bars, restaurants are, hotels or guest houses are everywhere, very cheap too.
I have just come back from Yangshuo last month, it's really great.