Отображение пользовательского интерфейса из службы Windows очень проблематично, поскольку служба может работать на другом рабочем столе пользователя (а в Vista / Server 2008 фактически всегда будет работать на другом рабочем столе).
Самое простое решение - запустить пользовательский интерфейс не непосредственно из службы, а из приложения, работающего на рабочем столе пользователя (возможно, настроенного на запуск при входе в систему), который каким-либо образом взаимодействует со службой.
Просто запомни:
- Возможно, пользователь не вошел в систему
- Может быть несколько зарегистрированных пользователей, использующих быстрое переключение пользователей или удаленный рабочий стол
- Приложение на рабочем столе пользователя работает в контексте безопасности пользователя, а не в службе