But obviously you try to avoid this in production environments if possible.
It only works for comparatively small packages, you'll need to keep an eye out yourself for security patches -- but it allows you to install stuff via dpkg -- and generally if the thing is too complex, you'll probably want to run a distribution package anyway (something simple in this context is nginx, varnish, nodejs (but I tend to run upstream nodejs -- too much of a moving target...) -- something complex might be pygame or network-manager -- basically stuff that has deep and wide dependencies.
For stuff that I need to get from upstream, I try to use xstow -- it's a great way to keep either /usr/local or ~/opt/ manageable. Note: for nodejs -- it doesn't read the prefix variable for just make install, use DESTDIR (and do some manual cleanup):
http://www.debian-administration.org/articles/682#comment_26
https://wiki.debian.org/Schroot
http://www.debian-administration.org/article/schroot_-_chroo...
Note the warnings about going willy-nilly "xhost +". Much better to bind-mount home under the schroot(s) -- partially you'll probably want access to your home folder anyway (say Firefox or Chrome profile?) -- and it gives access to the X11 auth cookie keeping everything as (in)secure as it usually is.
That said, I don't advocate doing things that are more complex than what is actually needed. For me xstow strikes a good balance.