Можно ли во ViewModel узнать ширину элемента View?
Зависит от того зачем вам нужна информация о размерах UI - элементов.
Если это часть пользовательских настроек, то хранить их на уровне ViewModel совершенно нормально и никак не противоречит паттерну. 
Но если это нужно исключительно для временной настройки UI, то и код должен находится на уровне View. 
Для вашего примера решение будет таким: добавьте обработчик события клика на кнопку и выводить информацию там.
MVVM это не означает что в code-behind не должно быть никакого кода. Это типичная ошибка. В .xaml.cs не должно быть того, что не относится непосредственно к отображению. 
Управление анимацией, вывод вспомогательных сообщений, кастомизация пользовательских элементов управления - все это может быть там.
Не знаю насколько это противоречит паттерну, но с ходу пришло такое решение.
View:<Button x:Name="MyButton" Command="{Binding ClickCommand}" 
CommandParameter="{Binding ElementName=MyButton}"/>
ViewModel:public class MainViewModel : BaseViewModel
{
    public Command ClickCommand { get; set; }

    public MainViewModel()
    {
        ClickCommand = new Command(ClickCommandExecute);
    }

    private void ClickCommandExecute(object obj)
    {
        Button button = obj as Button;
        MessageBox.Show(button.ActualHeight.ToString() + " : " + button.ActualWidth);
    }
}
Только тсссссс! ViewModel ни слова!