No ja robie tak:
formularz.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<form method="post" action="upload.php" onSubmit="otworzJakosPopup()"> <input name="Plik" type="file">
W tym momencie otwierany jest popup z informacją, że plik jest właśnie przesyłany. W tym czasie dane są wysyłane na serwer i plik upload.php nie zaczyna jeszcze działać bo serwer dopiero przyjmuje żądanie. Tak więc popup cały czas szuka sobie zmiennej "poPrzeslaniu" ale jej nie znajduje bo window.opener jest pusty.
Dopiero kiedy plik zostanie przesłany na serwer skrypt jest uruchamiany i odpowiednio obsługuje plik i wyrzuca do przeglądarki HTML wraz z polem hidden "poPrzeslaniu". Skrypt w popupie cały czas odwołując się do okna z którego został otworzony wkońcu znajduje zmienną "poPrzeslaniu" i się zamyka

upload.php
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Formularz</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
</head>
<body>
<?php
/*
* Tu obsługa przesyłanego pliku
*/
?>
<input type=\"hidden\" name=\"poPrzeslaniu\" id=\"poPrzeslaniu\" value=\"true\">
</body>
</html>