Как сделать, чтобы форма понимала, когда я хочу загрузить картинку с компьютера и когда с удалённого URL?
Кнопка-переключатель + скрытые поля + JS-магия
Нужно сделать два разных поля: одно будет [input name='file' type='file'], второе [input name='url' type='text']. С помощью CSS Вы сможете из совместить в одно. При получении данных обработчиком в $_FILES будет информация по отправленному файлу, а в $_POST — по URL этого файла.