При работе в терминальной сессии принтеры, которые мапятся на серв очень часто капризничают. Очень долго ковырял с чем это может быть связано. В итоге к конкретному решению так и не пришел, но всё, что узнал решил описать здесь.

Вообще сам протокол RDP довольно глючный, поэтому если у кого-то работает принтер в рдп, это ещё не значит, что у Вас на том же железе, с той же конфигурацией всё будет работать без проблем. Да и у того, у кого работает может через час отвалиться, а замапить принтер получится только с помощью плясок.

По RDP могут корректно работать только те принтеры, в названии которых присутствуют 3 заветные буковки: PCL. Соответственно драйвера на них нужны тоже PCL. Существует как минимум 2 разновидности этих драйверов: PCL5 и PCL6. Говорят, 6-я версия глючная, поэтому ставить нужно 5-ую. Также существует разница в версиях RDP. Маппинг принтеров поддерживается только в версиях RDP начиная с 5.2 (Windows Server 2003), в версию 6.1 (Windows Server 2008) входит Terminal Services Easy Print driver (позволяет не устанавливать драйвера клиентских принтеров на сервере).  Но это тоже глючная херня и полагаться на неё не стОит.

Принтеры, подключенные локально к порту, имя которого начинается не с букв COM, LPT или USB печатать так просто не захотят (http://support.microsoft.com/kb/302361). 

Ещё один костыль для исправления этой проблемы:
1. Устанавливаем локальный USB принтер у клиента стандартным образом;
2. Расшариваем его;
3. даём команду:
net use lpt1: \\имя_компа\имя_принтера /PERSISTENT:YES
4. Устанавливаем новый “виртуальный” принтер, якобы подключенный к lpt1 и назначаем его по-умолчанию;
5. Всё, после этой операции любой USB принтер, вне зависимости от заявленной производителем совместимости, замечательно видится при подключении к терминалу. (http://forum.windowsfaq.ru/showthread.php?t=97478)

Естественно, должна стоять галочка “использовать локальные принтеры” на клиенте и снята галочка “запретить перенаправление принтеров” на сервере. Имя принтера должно в точности (вплоть до регистра) совпадать с именем его драйвера на сервере. 

Ещё можно попробовать установить следующие пакеты:

1. MicrosoftFixit50180

2. WindowsXP-KB972422-x86-RUS

А ещё лучше использовать пакет ScrewDrivers и подобные, но это довольно дорого.
Насчет ScrewDrivers вот что мне ответили на одном известном форуме: “Дорого, потому что нет лучшего решения. Всё что ты выше написал - мура, проверенная многолетней еблей с печатью. " Так что решайтесь =)

Информация отсюда:
1. http://ru.wikipedia.org/wiki/Remote_Desktop_Protocol
2. http://www.gotdotnet.ru/blogs/blackhawk/1243/
3. http://www.tonk.ru/support/faq/printers02/
4. http://www.tonk.ru/support/faq/printers01/ 

    http://www.osp.ru/win2000/2001/02/174688/

UPD:
Большинство принтеров будут корректно работать в терминальной сессии, если разрядность операционных систем сервера и клиента совпадает. То есть если на серве Windows 2008R2 (а она выпускается только в 64-разрядной редакции), а на клиенте - Win XP 32, то 90%, что принтер в терминале печатать не будет. А если на клиенте Windows 7 x64 - 90%, что проблем не будет.
 Возможно, ещё играет роль семейство ОС (т.е. Win7 не будет печатать на WinServ2003 и наоборот). Хотя это лишь догадки - не проверял. Если кто знает - добро пожаловать в комменты!
Если клиент не в локальной сети, а в интернете - поднимайте VPN.
Ещё можно почитать здесь.