In my previous job, we developed a new GPS receiver architecture and algorithms to take advantage of it. We wrote a simulation of the hardware in C, and had sampled data files from a GPS RF front end. These were used to develop the control software and advance the receiver architecture design.
It was extremely slow, but worked well. The target was not a PC, so we had a number of conditionals to hide the compiler differences and cover some of the shortcomings of the hardware simulation. All told it was pretty successful.
In the past, I have developed algorithms on the PC that I later ported to an embedded platform. It's pretty effective, especially if the target hardware is non-existent, hard to access or flakey.
Bob