Sorry, Epic fail it worked a little longer than it took to write this how to, and I'm back to trial and error. I'll be back to rewrite it when I'm sure I have it right. Again, my apologies for the inconvience.
I finally got this working on my system after several months of on and off trial, error, and web searching. My application is specifically a pair of Micro Innovations USB speakers attached to my Ultimate Edition laptop, but should be effective for USB headsets and sound cards as well. Firstly, you'll need to know what sound devices are available to your current user. To do this, we'll open a terninal and:
asoundconf list
This will show the sound devices alsa sees as available to you. If none of them are the one you're looking for, make sure your device is connected, if it is, make sure that you have permission to use the one you're looking for.
Then, we'll use:
asoundconf set-default-card name_you_think_is_right
I tested this by mousing onto an mp3 file and listening to where the sound came from. Repeat this command and test for the name you think is your internal. Remember that if you decide to use a program to play the file you're using to test with, it will have to be restarted after each asoundconf set-default-card that you run. Now you can switch from one to the other.
I can hear it already, "That's great slingshot, but I don't want to open a terminal to switch," you say. No problem, I'm lazy too. All we need now is a udev rule to handle that tedious CLI stuff, and here's how to do it.
Remove your USB sound device, open a terminal, and:
ls /dev
Plug in your sound device, and ls /dev again. Look for the new entry. It's probably dsp1. If it is, then:
udevadm info -a -p $(udevadm info -q path -n/dev/dsp1)
This will output a list of udev matching keys for your device and all it's parent devices. If you're not familiar with udev rule writing, this may be of help http://www.reactivated.net/writing_udev_rules.html Choose at least one key from the device itelf, another one from either the device, or one, and only one, of it's parent devices. I chose the serial number to make my rule specific. Open your favorite text editor as root, and copy these lines into it:
[match_key], [match-key], ACTION=="add", RUN+="/usr/bin/asoundconf [external_device]"
[match_key], [match-key], ACTION=="add", RUN+="/usr/bin/asoundconf [internal_device]"
These are the lines from mine as an example. If you need to know more help, http://www.reactivated.net/writing_udev_rules.html
KERNEL=="dsp1", ATTRS{serial}=="0000:00:1d.2", ACTION=="add", RUN+="/usr/bin/asoundconf default"
KERNEL=="dsp1", ATTRS{serial}=="0000:00:1d.2", ACTION=="remove", RUN+="/usr/bin/asoundconf ICH6"
Once you've entered your match keys, and device names, save this file as /etc/udev/rules.d/10-USB-Sound.rules. Now, when you plug in your device, udev will tell alsa to use it, and when you unplug it, udev will tell alsa to use the internal.