Roland gave a good overview of the "right" things to look out for: things done by design. I want to warn you about the "wrong" things: issues created by bad programming.
I've easily done dozens of migrations, and the toughest problems weren't those changes that Powersoft / Sybase / SAP documented. Sometimes programmers found an unintended behaviour of a function and relied on it, so when it was fixed, his code broke. Some reverse engineered an event sequence through observation, coded a dependence on this sequence, and when that sequence changed from a PB upgrade, OS upgrade or even a hardware configuration change (I've seen faster processors or more memory do this), the functionality fails. More often than I want to admit, programmers reach the end of their understanding solving a problem, and instead of extending their grasp, they flail until they stumble on a solution, with no idea how stable or precarious it is. I've seen one programmer advise another "Try a Yield() and see if that does anything." I threw up on the spot. (OK, maybe only in my mind, but still...)
PowerBuilder migrations can be the smoothest you could ever run into. At one point I was maintaining code in multiple versions of PB, and literally did multiple migrations per day without a hitch. However, as with most tools, the difficulty you'll run into will go up exponentially with the quantity of garbage code in your system.
Good luck,
Terry