Copying properties between two classes
Good for you for resisting the temptations of Automapper.

My answer to your question is to design around it.

I often write my viewmodels generically so I don't have to copy properties.  This does not work in every case but works in more cases than you might think.  Your viewmodel might become something like this:

public class BaseViewModel&lt;T&gt;  
{
    public T Model {get; set;}

    public BaseViewModel( T model)
    {
        this.Model = model;
    }
}

public class DogViewModel : BaseViewModel&lt;Dog&gt;
{
    public DogViewModel(Dog dog) : base(dog)
    {

    }

    public void DoSomething()
    {
        // do something with Dog object...
        Model.Weight = 10;
    }

}


I wrote a little about it on my site:
http://www.samwheat.com/Post/The-function-of-ViewModels-in-MVC-web-development