Has been proposed, biggest drawback is you're still depending on the computer to tell you what your device is about to sign. It could say you're sending 5 BTC to merchant A, but really you're sending 5000 BTC to badguy X. So the device needs a screen.
And with a screen, comes a cost that many are unwilling to pay. People are already unwilling to pay $29 to secure their thousands of dollars at MtGox. There would also need to be a secure way to back up the device so your bitcoins aren't gone if it fails - another step that would turn people off.
But otherwise, yes, it would work.
Off-the-shelf refurbished credit card machines are an example of something that would meet the need hardware-wise and are often available at a very nominal cost. (there's a whole thriving industry of refurbishing CC machines abandoned by businesses that upgrade their systems or go out of business... in this case, refurbishing generally meaning putting old good electronics into brand new made-in-china knockoff enclosures so they look like brand new machines at an affordable price. Check out eBay for "Omni 3200" for a good example)
What is the hardware requirements for actually generating the key? I am assuming that a 16bit PIC could handle it making the production unit cost under $10.
As for amount verification you have the PIC hold the incoming amount and key and continually stream that back to the client meaning it cannot be overwritten while it is held by the PIC. Have the pic clear that data buy pressing the button or Press button for 3 seconds to generate new key.
I guess there could be a trojan that could emulate the usb stick and intercept communications between the client and PIC using a pin number on the client would not add to the cost............
As for those not spending $29 securing thousands it does make those of us taking minimal precautions safer via the low hanging fruit method