Preset Widgets ONLY after site is initially created

Why not output your Theme’s custom Widgets using the_widget(), inside of a if ( ! dynamic_sidebar( 'sidebar-name' ) ) conditional?

e.g.

<?php if ( !dynamic_sidebar( 'sidebar-right' ) ) {

$widgetsidebarrightargs = array(
    'before_widget' => '<div class="widget">',
    'after_widget' => '</div>',
    'before_title' => '<div class="title widgettitle">',
    'after_title' => '</div>'
);

the_widget('WP_Widget_Calendar' , 'title=" , $widgetsidebarrightargs );
the_widget( "oenology_widget_linkrollbycat' , 'title=Oenology Links by Cat' , $widgetsidebarrightargs );
the_widget('WP_Widget_Meta' , 'title=Meta' , $widgetsidebarrightargs );

} ?>

This is what I use in my Theme. The oenology_widget_linkrollbycat Widget is a custom Theme Widget. Simply replace with your own Widget names.

This way, your Widgets are applied to the specified sidebar by default, unless and until the user adds his own Widgets to the sidebar via Dashboard -> Appearance -> Widgets.