Minimal sources.list configuration.
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
deb http://ftp.de.debian.org/debian stable main non-free contrib
deb http://ftp.de.debian.org/debian testing main non-free contrib
deb http://ftp.de.debian.org/debian unstable main non-free contrib
When updgrading, stable versions of packages need to stay on stable. unstable versions are usually newer, so they overwrite stable versions if this is not properly handled with using Pin-Priority as stated below. If not explicitly requested, "apt-get install" installs stable version of a package.
Pin: release a=stable
Pin: release a=testing
Pin: release a=unstable
To install f.e. unstable version of a package with dependencies from unstable as well (preferred method, AFAIK), do the following:
apt-get install package -t unstable
To install the same package, but to resolve it's deps from stable:
apt-get install package/unstable