What is the architecture of the application? Web app? Three-tier with a separate application server? Or does the user run the application from his desktop and the application connects directly to SQL Server?
In the latter case, there is only one option: Terminal Server/Citrix + network segmenting.
If you have a two-tier app, and use EXECUTE AS or an application role, you cannot achieve security, because anythijg the app can do, the user can do from SSMS. So the only option is to keep the user out from SQL Server.
If you have three tiers there a few more options.
Erland Sommarskog, SQL Server MVP, www.sommarskog.se