Циклит потому что:
after_update :reprocess_image, :if => :cropping?
Получается сохранение картинки в after_update заново вызывает after_update.
Чтобы избежать закцикливания можно использовать before_commit (так обновление картинки вызывается два раза, но хотя бы не бесконечность)