I require a UNIX environment for building my OS. I do most of my development work on Mac OS X these days. I love XCode and use that as my IDE (or sometimes just use Smultron for light-duty coding), but the build system is based on "traditional" makefiles. This allows anyone else that wants to work on my OS to develop on Windows or Linux or whatever, using whatever IDE they want, as long as they follow my project's Coding Standards and have a GNU toolchain.
I put traditional in quotes because my makefiles are dynamically generated via templates. It's a lot like using autotools, except it's not autotools and there is no configure step. It is all done in make syntax, without using a recursive make once the build is started. I call my build system "QBuild" for lack of something better. It is also capable of making use of distcc and ccache if needed, but that functionality is all commented out as my code builds in only a few seconds anyway.
To make things a bit easier and more sane, I also require a specific version of GCC and binutils for a cross compiler that is targetted to my OS. I provide explicit instructions and patches for building it, along with a script that'll do it for you. The script works on OS X, Cygwin, Linux, and last I checked, OpenBSD.
All ASM code in my kernel is done in AT&T syntax, and compiled with GNU as.
For coding, on Linux machines I primarily use Kate. On Windows (on the super odd occasion I do something there), Cygwin is required, and I'll use Nedit to code. I've already covered OSX, but on any machine I'll fall back to vim for quick one-offs or if there's nothing else available.
To get around most issues with creating images for testing, I just create ISO images with the help of mkisofs. That requires using macports on OSX, so I'll probably change things to detect building on OSX and run hdiutil there instead.
Speaking of testing, most of my testing is done on Qemu, but once I get something working there I test on as much real hardware as I can get my hands on.