On her Managing Product Development blog, Johanna Rothman wrote an entry about scheduling the implementation of mixed software/hardware products (hardware with software embedded in it).
She recommends implementing a "pass" through the system as quickly as possible and iterating thereafter. In other words, instead of implementing a component at a time, implement just enough of each component to get a usable (if only for one usage scenario) product integrated and running. Don't develop the hardware and software independently and integrate at the end. Instead, integrate the hardware and software in an iterative or continuous fashion. This approach is consistent with agile development.
I added a brief comment to her entry recommending that the product development team iterate on the requirements as well as the implementation. In other words, incorporate agile product management in the process.