I think (could be wrong here) that it's more complicated than it needs to be.
You could use a physically connected token or a bluetooth token (cell phone maybe?) with a pin on it.
You could do this several ways. One would be entering the password sends a code to the computer letting you transfer or the other would be it displays the code (like a paypal token) to be typed in on the computer and given access.
Theres a lot of options with tokens and seeing how you can have them pin restricted and how cheap they are I think it's a good option. My only issue is if the token dies gets lost etc, you'd have to have a backup of some sort.
I don't get it, sorry. What would be stored in the token? And what would the communication between the token and the bitcoin PC client be? If you are using the token to hold the wallet and do the transaction signing itself, then we are talking about the same thing, if on different hw (pics can come out REAL cheap, too).
But if you are saying the token pin protects the wallet.dat file, then there's no trojan/virus protection at all, I guess. Once you unlock it, the file is available to the computer, period.
The token would just provide a Mathematical algorithm based one time password and that's it. The client would only send when it confirmed this password. You could use OATH for this.
It's open source etc. Like mentioned above you could still be vulnerable to someone swapping the address. You wouldn't lose your entire wallet though and would be a start.
It would be like this.
1)turn on client and enter address of recipient
2) type amount and hit send
3) client asks you for token password
4) enter pin on token get password ex:447421
5) type 447421 in to client and the transfer starts
If someone was listening in or standing over your shoulder etc they wouldn't be able to replicate this because they don't have the token.
The token could be used manually like this or it could be connected via usb bluetooth whatever they make a variety.
The client would have to be modified to get the "go" on the transfer from the token is all.