Is is possible to create a virtual directory that is only for a particular host name. For example, I have an IIS site which responds to www.abc.com and www.xyz.com. I'd like to create a virtual directory that only applies to xyz.com.
Yes & no. With IIS you would be required to setup 2 sites (with the hostnames listed in the site bindings), one of which has the virtual directory, and the other without.
If you're not making use of the site bindings with hostnames, you're going to run into problems. It's good practice to use them anyway.