Automatically Adjusting System Volume Based Upon Ambient Noise Level
AFAIK there's no software that does this for you. However rolling-your-own solution wouldn't be too hard, and there are a few resources that could help you do it quite easily.
This MSDN entry detailing how to set volume based on ambient noise fits your use case prefectly, and includes some c# code to do it. Unfortunately it targets Pocket PC/.NET Compact Framework, but some of it may be directly portable.
This article covers how to adjust the volume in Vista programatically and includes the code to do it.
Also, AutoIT is a product that provides a scripting language that includes volume control commands. It's possible that if you could find a command line tool to get input from your microphone, that you could combine the two into a 'mash-up' cript that acheives what you want. You could then use windows tasks to set the script to run eg every 2 minutes.
I would use noise cancelling headphones. Otherwise I think it is very difficult to achieve.