Ciao,
Un paio di considerazioni:
Se usi un approccio "statico", ovvero un semplice form HTML con upload POST, il browser restera' bloccato fino alla fine dell'operazione di upload. Questo significa che dovrai aspettare sia che l'upload sia completato e che qualunque operazione php che avviene in seguito abbia finito.
Ci sono varie library basate su jQuery che permettono upload di tipo asynchronous ( Eg: github.com/danielm/uploader/) - Certo richiedono comunque che l'utente resti sulla pagina, ma il browser per se non resta bloccato e se usi un framework tipo Angular JS o React possono continuare a navigare sul tuo sito.
Inoltre, non capisco perche' tu muova il file come parte della procedura di upload. Potresti caricare tutto su una cartella temporanea, lasciare andare l'utente e separatamente spostarlo dovunque serva.