You could achieve this by setting the prices to only show for registered users at an individual price level. If you have a lot of products, this can be quite painful, especially if you forget to do this. BUt this is the functionality that VM provides to achieve what you wish, without making any changes to templates etc.
However this could also be achieved through an (possibly nasty) override to the price template - not sure what it will do to any modules such as promoted products but it might work for you.
\templates\yourtemplate\html\com_virtuemart\sublayouts\prices.php
You need to check for a user id and if there is one, the user is registered and logged in.
$user = JFactory::getUser();
if ( $user->id > 0 ) { ?>
display the prices
} else {
display something else
}