Хотя в вашем случае даже Short Polling наверное подойдет, без всяких там Comet. То есть вы загружаете фотки и все. На сервере они отдельно обрабатываются в фоне (для этого можно использовать менеджер очередей, либо просто в бд складываете задачи и скриптом, запускаемым по расписанию, их разгребаете). Когда обработка фоток закончится - сообщаете об этом базе данных.
В это время браузер периодически будет аяксом у сервера спрашивать - закончилась ли обработка
Можно просто написать приложение, не создавая ни формы, ни окна с консолью. Будет "невидимым".
Вместо Application.Run(new Form1()); напишите Application.Run();. Или вообще не пишите.
Но если ваше приложение по смыслу должно быть службой, то думаю лучше и делать его как службу.