premetto che non ho analizzato il codice php... hai verificato i limiti di dimensione per esempio?
Se il problema è abbastanza riproducibile (es. caricando 10 file, almeno una volta succede), prova a fare 10 copie di uno stesso file con nomi 1.jpg, 2.jpg, ..., 10.jpg e carica queste: se non succede allora probabilmente dipende dall'immagine.