mmm, si, ma ....
... posteresti il messaggio di warning che php DEVE mostrarti, tranne se configurato per non farlo, quando la funzione move_uploaded_file fallisce?
il fatto che sta dentro un IF non vuol dire assolutamente nulla ... se php non ti mostra i messaggi di errore controlla che il parametro display_errors sia su on e che l'error reporting sia su E_ALL