Interactively installing Debian virtual machines with virt-install without having to download anything in advance can already be done by pointing it to a Debian mirror via --location. But you can also add files to the initrd after downloading using --initrd-inject. Upstreams intended use is for kickstart files but we can also feed it a preseed.cfg to automate the whole installation:
virt-install --connect=qemu:///system \ --location=http://ftp.us.debian.org/debian/dists/stable/main/installer\-i386 \ --initrd-inject=/path/to/preseed.cfg \ --extra-args="auto" \ --name d-i --ram=512 \ --disk=pool=default,size=5,format=qcow2,bus=virtio
preseed.cfg is a regular preseed file (as described in the Debian Wiki) in your local filesystem. I'm using this one for Squeeze and Wheezy VMs. It must be named preseed.cfg in order for d-i to pick it up from the initrd. This also works for URLs like qemu+ssh://<remotehost>/system/ since virt-install uses libvirt's streaming API to upload the kernel and modified initrd to the remote host.
In case you're running this on an i386 you'll need this fix which already sits in experimental.
This blog is flattr enabled.