As I understand the problem, in order to separate the wallet/GUI from the block chain you need to draw a line between them.
The wallet has:
High security
The macro transaction as defined by the user (number of coins, dst address, maximum tx fee)
All the valid addresses associated with the signing key
The signing key
The wallet needs:
An exact list of the micro transactions required to execute the macro transaction
------------------------------------------------------------------------------------------------------------------------------
The block handler has:
Internet connectivity
A list of all addresses in the universe and how many coins are associated with each of them
The block handler needs:
A signed list of micro transactions to be included into the block chain
So, it seems like the following steps are required to perform a send transaction:
1) User inputs the number of coins, destination address and maximum transaction fee (optionally the addresses to take the coins from)
2) Wallet requests number of coins in each address (from block handler) starting with the oldest until sufficient coins are available to complete transaction
3) Wallet builds micro transaction list, calculates TX fee, and prompts user if calculated fee is too high
4) Wallet sends signed micro transaction list to block handler
5) Block handler validates transactions and reports back to user success/failure. Note that the block handler does this for transactions from the internet anyway.
6) If valid (block chain hasn't reorg'd) transaction is broadcast to world
Does this solve your inversion of control problem? I believe it addresses my security concerns regarding the signing key being attached directly to the internet. There is an issue with the wallet needing to request all coins in all addresses in order to update the current balance. I prefer the extra workload this incurs over having all the wallet addresses resident in the block handler where they could potentially be stolen.
PS a better link
http://www.wired.com/medtech/genetics/magazine/17-05/ff_protein?currentPage=all