Although I've used GPO's to lock down sessions, recently I've taken another tactic. I simply configure the RDP protocol on the Terminal Server using Terminal Services Configuration MMC. Get properties on the RDP-TCP connection and choose the environment tab. Choose "override settings from user profile and RDP client" and then notice that you are able to enter a program path below. I point it at a batch file I've written.
I wrote this batch file for my environment that kicks off both of the apps that the user might need to log into, each of which brings up a logon dialog. The users cancel logon for the app they aren't interested in using and log onto the app they want. Since we wrote custom apps, the logon dialogs are small (in screen real-estate), but this might be a problem if your apps didn't have small logon dialogues.
If the user closes all of the logon dialogue boxes, the session automatically logs itself out. And since the Explorer shell is bypassed when you use this option, there is a blank desktop with no start menu behind the apps that run.
A better way to do this, if you have a programmer in-house, is to write a quick app that gives the user a menu of which app they want to execute, and tell the RDP connector to run that app on logon. Then you wouldn't have the overhead and potential confusion of having unneeded apps open in a session, and you still avoid using the explorer shell that gives users access to all those things you want to restrict.
If this isn't helpful, I hope it's at least interesting.
ShackDaddy