Il problema non é dato dalla dimensione del file ma da quello dell'immagine. Se tu uploadi un'immagine tutta bianca di 2000x2000 pixel nonostante sarà di pochi byte l'errore lo da' comunque. Questo perché la libreria GD si crea una matrice dell'immagine per poterla trattare.
Quindi una volta uploadato se vuoi sapere se la lib andrà in errore é sufficiente moltiplicare larghezza per altezza per profondità di colore.
Se invece vuoi bloccare, giustamente, l'upload prima di effettuarlo con php non potrai mai sapere quanto é grande l'immagine (perché gira sul server) e quindi devi trovare qualcosa lato client (javascript?)