I was thinking about this the other day, it could be done on the blockchain pretty simply.
Suppose you have user A and user B. A owns the stock, and B wants to buy it.
A transaction could work like this:
1) B sends A a small transaction, say for 0.001Btc, (and including mining fees) with a randomly generated token, as well as a request for an amount of stock and a price in the script section of the transaction.
2) If A decides to sell or transfer - they send another message back to B basically saying that they agree.
3) B sends A the bitcoins to buy the stock.
4) The asset issuer sees the transaction on the blockchain, and changes the bitcoin address associated with their transaction and updates their internal database of who owns what shares.
Optionally, you could have the issuer send a notification to user B confirming the order.
The nice thing about this system is that it would work entirely with the existing bitcoin protocol. The only thing needed would be a tool to configure the correct script to include in the transaction - and these wouldn't need to be 'live' scripts, just scripts containing information that the issuer would look at.
Of course, this would be
slow . The primary use for a technology like this would be to transfer shares between exchanges. It would be easy for people to setup exchange sites that would allow quick transfers of shares for fast trading, or people who want to buy and hold could keep their shares in their own wallets.
Obviously I know there are other systems out there, like OpenTransactions and so on. But this would have the benefit of working with bitcoin so people who already understand bitcoin will understand exactly how this works and will know it's reliable.
Plus, the people who make money off of this will be bitcoin miners. Which would be nice for the miners