It depends on the size of the project

Here's the guidelines I tend to use

 - A small project, with a handful of pages or less, I almost always keep to a single project.

 - If the small project's Data Access layer is large or complex, I might separate that out into it's own layer, but otherwise it just sits in its own folder.

 - If the project is bigger, I'll almost always have a separate project for the DAL, and any further splitting depends on where the boundaries between the application's functionality lies. 

 - If the application has multiple purposes, each with it's own views, viewmodels, etc, then I'll usually separate each piece into it's own area. If each section is small, I separate them by a Folder. If each section is large, I'll separate them by a project.

 - If I have multiple projects that need to reference the same set of objects (`ViewModelBase`, `RelayCommand`, etc), I'll create a project just for the shared infrastructure objects.

 - If I have a large amount of shared custom styles/templates/resources, I'll create a project just for those.


As a side note, I made a mistake with my first large WPF project and separated them by putting Models in one project, Views in another, and ViewModels in a third. I can tell you now that's not the way to go, since maintenance becomes a nightmare :)