If you are using a MVVM pattern you have quickly the problem, that you need stuff like confirmation dialogs or message boxes to interact with the user. In my actual project (Silverlight 4 project with RIA Services hosted at the Windows Azure cloud) I use the approach to define a neutral interface IDialogProvider and a implementation with specific coding to show popup windows and return optional the result via callbacks. With this approach the view model is still independent from the presentation layer and testable with unit tests.
Usage in the View model:
private IDialogControlProvider _dialogControl;
_dialogControl can be set via the contructor of the view model instance (in my case a view model locator class) or with a special initialize method.