Ну это всё зависит от возможностей сервера и тд. Ну вообще сейчас обычно используют 2 мб.
Для сжатия изображений есть много библиотек и примеров. Допустим пользователь отправляет изображение весом 4 мб, необходимо определить коэффициент сжатия 4мб/2мб = 2, значит коэффициент будет равен двум и сжимаем изображение в 2 раза. А ещё лучше делать одну миниатюру ещё меньшего размера, чтобы разгрузить сервер.
Допустим изображение 2мб и миниатюра 400кб.
Вы не указали какие технологии используете по этому примеры будут на php.
Сжатие изображений на php<Библиотека для работы с изображениями