I have a solution that worked for me. I rolled my own theme switcher though, so your results may vary.
In my theme switcher plugin, I detect if the user is on a mobile device, if so then I set a cookie and load the mobile theme. On mobile theme pages, I have a button that users can press to go to the full site. This button changes the cookie I set, and the theme switcher loads the full site theme when it sees that the cookie was changed to load the full site.
To get this to work with w3 total cache, I used a setting in Performance > User Agent Groups. For the theme, I select -- Pass Through -- since I'm having the mobile theme switcher plugin decide which theme to load. Then in the user agents field, I add the mobile user agents.
With this, I'm able to have cache on mobile and full site themes, and have mobile users go to the full site if they want.