Creating list ViewModels in the correct way
UserWorkspaceViewModel  


private UserViewModelFactory _userViewModelFactory; instead of using the actual type use the interface like private IUserViewModelFactory _userViewModelFactory;  
magic number 1 (Users.GetByDepartmentId(1);) should be expressed by a meaningful constant.  
LoadUsers() method. Here IMHO you have used the var wrong. I don't think it is obvious what the right hand side of var users = _unitOfWork.Users.GetByDepartmentId(1); can be.  

List&lt;User&gt; users = _unitOfWork.Users.GetByDepartmentId(1);
foreach (var user in users)
{

}  


would be more obvious.  

UserViewModel 


the constructor won't compile, but I assume this is a copy &amp; paste problem.  

public UserViewModel(IUnitOfWork unitOfWork)
{
    _unitOfWork = unitOfWork;
}  

Save() method  

I guess it won't be possible for the Id property to become &lt;0 so a simple else instead of another if would be better.
If the chances are high that you will need to add more code, consider to extract the adding and updating to separate methods.  

General  

Comments should explain why something is done. What is done should be explained by the code itself by using meaningful names for classes,methods and parameters. So comments like // Use the factory to create the ViewMode should be removed.