Try adding a filter instead. See this answer for more details
add_filter('admin_menu', 'admin_menu_filter',500);
function admin_menu_filter(){
if (! is_admin()){
remove_submenu_page( 'themes.php', 'background.php');
}
}
Also double check your link to the page from the admin menu. More details in the WordPress Codex
To remove a settings page for plugins that use a slug like /wp-admin/options-general.php?page=certain-plugin-settings use this code:….remove_submenu_page( ‘options-general.php’, ‘certain-plugin-settings’ );