Well, I didn't want to go through the trouble of setting up a headless bitcoind the old Debian way. Ubuntu uses upstart now and the scripts are a whole lot easier to write. Here is a quick way to get the current incarnations of bitcoind to behave easily, without passing command line arguments (makes troubleshooting with bitcoind from the command line easy if you want to give the user a shell). I'm including all the steps I use just to help others out. I just dump the tar contents of the latest bitcoin archive into the home directory and then lock down the permissions. In this way, the binaries are out of the way and owned by a system account with no password.
Note: this would be for a new installation. Skip the useradd, chmods, and config files and head straight for the bitcoind.conf upstart script below and modify if you like the way you setup the binaries already (/usr/local/bin, /opt, etc).
## Assumes no bitcoin user, bitcoin tarfile needs to be downloaded, and you're logged in as a sudo-capable user.
sudo useradd -r -m -s /bin/sh bitcoinuser
sudo su -c /bin/bash - bitcoinuser
## Replace all occurrences of 0.3.24 with current bitcoin version
curl -L -O
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.24/bitcoin-0.3.24-linux.tar.gz/downloadtar zxf bitcoin-0.3.24-linux.tar.gz
mkdir ~/bin
ln -s -t ~/bin ~/bitcoin-0.3.24/bin/32/bitcoin ## <- Change 32 to 64 if you're on 64bit Linux
ln -s -t ~/bin ~/bitcoin-0.3.24/bin/32/bitcoind ## <- Change 32 to 64 if you're on 64bit Linux
chmod -R 700 ~/bitcoin-0.3.24
mkdir ~/.bitcoin
cat <<EOF | sudo tee -a ~bitcoinuser/.bitcoin/bitcoin.conf
# Simple Bitcoin configuration
#server=0 if you use the GUI
server=1
rpcuser=yourrpcuser
rpcpassword=SomethingReallyLongLikeThisfe2yft2Ojy4PYwt0bLIknc29jUz1IVgzMYYtLLH27oXQv
rpctimeout=30
# Change if you need more access
rpcallowip=127.0.0.1
rpcport=8332
gen=0
#Uncomment for TOR proxy
#proxy=127.0.0.1:9050
EOF
chmod 700 ~
chmod 700 ~/.bitcoin
chmod 400 ~bitcoinuser/.bitcoin/bitcoin.conf
chown -R bitcoinuser.bitcoinuser ~
exit
# Write out system upstart script
cat <<EOF | sudo tee -a /etc/init/bitcoind.conf
# bitcoind upstart script for Ubuntu
description "Bitcoin daemon"
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec su -c "/home/bitcoinuser/bin/bitcoind" - bitcoinuser
EOF
# Now start bitcoind
sudo start bitcoind
# All done!