You can limit this altogether (deny access) using permissions on Tableau Server. I understand this may not be what you want, but thought it was worth mentioning anyway.
Aside from that, I'm not sure you have many other options. There are several Ideas posted on this topic, including:
And the "View Data" section of Johan's Idea Collection: http://community.tableau.com/message/198405#198405
A method is to not permit dataviewing at all (deny access as suggested by Matthew), then build worksheet tabs that would show the columns that you permit a user to see. This involves setting up custom crosstab views that are published, then using an action to display data on this custom view data tab.