Использование 100 МБ памяти не так уж много для приложения обработки изображений.
Кроме того, в .net, когда вы получаете исключение OutOfMemory, весь процесс умирает, вы не можете восстановиться после этого.
Если вам нужно больше памяти (или, вернее, больше адресного пространства), чем может предоставить система, вы можете либо загружать и извлекать память страницы, либо использовать ее в 64-битном режиме.
Вы можете ограничить размер очереди, чтобы убедиться, что единственным «тяжелым» пользователем памяти является рабочий поток, у вас может быть более одного рабочего потока, что увеличит использование вашей памяти, но и быстрее опустошит очередь, просто помните, что в таких интенсивных процессорных процессах использование большего количества потоков, чем процессорных ядер, неэффективно.
Вы говорите о "наивно реализованной многопоточности", многопоточность полна ловушек - наивная реализация будет неэффективной и полна ошибок.