In my experience, Rails 2->3 was, most decidely, _that bad_. It was the most difficult and frustrating migration I've ever done, and none of the subsequent Rails migrations have been close to as terrible.
(The fact that 2->3 was, like for most, also ruby 1.8 to 1.9 probably contributed)
For me 3.0 -> 3.1 transition was definitely the more painful transition, because it forced me to also do 1.8 -> 1.9 at the same time due to a performance regression that made the test suite jump from 20 minutes to 2.5 hours under 1.8.
(The fact that 2->3 was, like for most, also ruby 1.8 to 1.9 probably contributed)