I'm still working on getting a free, open-source toolchain for ARM development up and running on Windows. I've actually had unprecedented success, given my track record with FOSS software. I've been able to write and build my code, and have used OpenOCD to upload my code to the STM32F0DISCOVERY board, run it, single-step through it, read Flash, RAM and registers, and write RAM and registers. The last little bit I need to get working is that I need to get Eclipse and OpenOCD to talk to each other so I can do integrated debugging in the IDE.
I'll probably end up writing a 4 or 5 part tutorial on this topic.