I had a chance to "play" around with a few virtualization and thin client architectures lately and i must say, before you proceed in spending your big bucks in them, consider the following ..
Top 5+1 things to consider before going for Citrix or Terminal Services
1. Not all applications can work with virtualization. If they work in Terminal Service for instance, they don't necessarily work on other platforms or virtualization thin clients. Test each and every business critical functions with end users (people who will eventually use the app)
2. Will this application be able to run on server platforms. It makes no sense to run them on workstations as workstations software have very limited hardware scalability. Furthermore, Citrix and TS only works on Windows Servers. Ensure you get proper papers to say it does work and fully supported on server platforms.
3. What type of specialized hardware or other related software your application require? Will that hardware/software work with virtualization? Simple example would be, your graphics card, when running graphics intensive applications, will they or not take advantage of this hardware when virtualizing? What if that hardware is required to run the app?
4. Is your application client server based? I don't think it makes any sense if there's no client server architecture involved when using virtualization technologies. Outlook and Exchange example here, you publish Outlook and hence run multiple instances of Outlook on a single server would make absolute sense. In a weird twist, if you publish Exchange and it creates an entire new DB for every new virtual instance, whoa, you need serious hardware power man.
5. Does your application maintenance support complies this sort of deployment? Otherwise, you may end up having the support people say, "sorry, we do not support this sort of configuration"..you're in a little bit of trouble
and just for the heck of it the #6 ...
6. Will it benefit in the sense of the amount of hardware+software+service+maintenance you will achieve vs. decentralizing. Also remember, crucially, availability, if decentralized, one PC goes down, one PC is affected, if in virtualization, one server goes down, 10s of clients are affected. How would you address availability, clustering? NLB? Layer7 switching? Built-in application HA?