function andrew_unregister_widgets() {
unregister_widget( 'WP_Widget_Archives' );
unregister_widget( 'WP_Widget_Calendar' );
unregister_widget( 'WP_Widget_Categories' );
unregister_widget( 'WP_Widget_Links' );
unregister_widget( 'WP_Widget_Meta' );
unregister_widget( 'WP_Widget_Pages' );
unregister_widget( 'WP_Widget_Recent_Comments' );
unregister_widget( 'WP_Widget_Recent_Posts' );
unregister_widget( 'WP_Widget_RSS' );
unregister_widget( 'WP_Widget_Search' );
unregister_widget( 'WP_Widget_Tag_Cloud' );
unregister_widget( 'WP_Widget_Text' );
}
add_action( 'widgets_init', 'andrew_unregister_widgets()' );
This unregisters all in-built wordpress widgets. Which ones of those are already active you’d have to manually check and remove from the function before adding it to your functions.php file.
EDIT: Removing inactive widgets when the admin area loads:
function andrew_remove_inactive_widgets() {
$widgets = get_option( 'sidebars_widgets' );
$widgets['wp_inactive_widgets'] = array();
update_option( 'sidebars_widgets', $widgets );
}
add_action( 'admin_init', 'andrew_remove_inactive_widgets' );