I almost always do inline upgrades of my Ubuntu (and Debian) systems rather than fresh installs.
It just works, and works quite well in my experience. I have a Jaunty 9.04 system that started life as an Ubuntu 4.10 system. It might have missed a couple point upgrades in there, but its still running strong. I've done test upgrades from 9.04->9.10 without issue as well.
During the process, local files that are different than packages expect might require user input to resolve.
If you want to move from 32-bit to 64-bit, you'll need to do a fresh install.
Make sure you have backups.