Block "Preview Theme" is tested with PHP-Nuke 7.3
The idea(and the block) is taken from www.cpgnuke.com

Installation:

Step 1:
Copy the file block-Preview_theme.php in html/blocks

Step2:
   
Open mainfile.php
Find the code between the doted lines: 
   
-----------------------------
function get_theme() {
    global $user, $cookie, $Default_Theme;
    if(is_user($user)) {
	$user2 = base64_decode($user);
	$t_cookie = explode(":", $user2);
	if($t_cookie[9]=="") $t_cookie[9]=$Default_Theme;
	if(isset($theme)) $t_cookie[9]=$theme;
	if(!$tfile=@opendir("themes/$t_cookie[9]")) {
	    $ThemeSel = $Default_Theme;
	} else {
	    $ThemeSel = $t_cookie[9];
	}
    } else {
	$ThemeSel = $Default_Theme;
    }
    return($ThemeSel);
}

--------------------------------
  
[ this is the whole function get_theme() ]

Replace it with the code between the doted lines:
   
--------------------------------

function get_theme() {
    global $user, $userinfo, $Default_Theme, $prevtheme;
    static $ThemeSelSave;  // Thanks to steven111 at NukeCops for pointing to static vars
    if (isset($ThemeSelSave)) return ($ThemeSelSave);
    if (isset($prevtheme) && file_exists("themes/$prevtheme/theme.php")) {
        $ThemeSel = $prevtheme;
    } else if(is_user($user)) {
	$user2 = base64_decode($user);
	$t_cookie = explode(":", $user2);
	if($t_cookie[9]=="") $t_cookie[9]=$Default_Theme;
	if(isset($theme)) $t_cookie[9]=$theme;
	if(!$tfile=@opendir("themes/$t_cookie[9]")) {
	    $ThemeSel = $Default_Theme;
	} else {
	    $ThemeSel = $t_cookie[9];
	}
    } else {
	$ThemeSel = $Default_Theme;
    }
    return($ThemeSel);
}

--------------------------------
3-      
Activate the block from the admin panel

That is All.
No bugs this time... I hope.
It cost you nothing to test it :D

Enjoy it.

Cheers
Truden