If you want a widget where the html changes depending on whether or not the user is a guest, then you could create a php widget with code like this:
Code:
if (vB::$vbulletin->userinfo['userid'] == 0)
$output = "This is some html for guests<br />\n";
else
$output = "This is some html for members<br />\n";
and set the cache time to 0. If you want the entire widget to disappear for guests then you could change the "Template Name" field to a custom template, copy the vbcms_widget_execphp_page template contents to your custom template, and surround it with a conditional that checks for $bbuserinfo[userid] != 0.