I'm not great with linux (just use it for home fileservers and the like), and for me it's generally a rule that debian distupgrades go catastrophically wrong (libc going out of sync and half the binaries on the system wouldn't run, that kind of thing). It's not foolproof like an OS X or Windows upgrade.
Ubuntu =/= Debian. I have several servers that have been upgraded from Woody up to Squeeze (that's 5 consecutive dist-upgrades in 9 years) and it's less problematic with each release. The only serious difficulties were switching from xf86 to xorg, then apache to apache2. Switching kernels (2.4 -> 2.6) or libc was quite painless.
Since Etch (Etch to Lenny to Squeeze) except for a couple of minor glitches going with the defaults "just works".
From what I've seen Ubuntu often fails upgrades because of the GUI (at some point during upgrade one or other part of the GUI fails/restart and kills the upgrade process itself). Simple advice: dist-upgrade in a text console (not a gnome-terminal!), and it should work fine.