Я столкнулся с этой проблемой недавно. Я не смог заставить работать -all_load, когда заметил, что другая категория у меня работала. Я был ленив для этой категории и включил ее в другой файл.
В итоге я создал фиктивный класс (без методов, переменных экземпляра) и включил реализацию моих категорий в файл .m для этого фиктивного класса. После этого мои категории начали работать даже после того, как я убрал флаг -all_load.
Это было на iPhone OS 3.1.3.
Конечно, это НЕ ПРАВИЛЬНЫЙ способ исправить это, но, похоже, это сработало.
Полный пример кода есть в моем блоге для моих (тривиальных) категорий.