This afternoon I learned of a few APIs that I was completely unaware of (that would have made my life a lot easier on some earlier projects). 3 hours later, We have this fully implemented:

Usage looks like this:
Radios radios = Radios.GetRadios();
Debug.WriteLine("\nBefore\r\n--------");
foreach (IRadio radio in radios)
{
Debug.WriteLine(string.Format("Name: {0}, Type: {1}, State: {2}", radio.DeviceName, radio.RadioType.ToString(), radio.RadioState.ToString()));
// toggle all radio states
radio.RadioState = (radio.RadioState == RadioState.On) ? RadioState.Off : RadioState.On;
}
// give the radios enough time to change state - some (like BT) seem to be slow
Thread.Sleep(1000);
radios.Refresh();
// display again
Debug.WriteLine("\r\nAfter\r\n--------");
foreach (IRadio radio in radios)
{
Debug.WriteLine(string.Format("Name: {0}, Type: {1}, State: {2}", radio.DeviceName, radio.RadioType.ToString(), radio.RadioState.ToString()));
}
Debug.WriteLine("\r\n\n");
Thread.Sleep(100);
The only down side is that they are WinMo 5.0 and later only, so sorry CE devs.
I'm going to add it to the SDF source tree so it will be in the next release (soon, I promise).