When you have a Bitcoin paper wallet, you have to send the entire balance out of the wallet if you want to spend a part of it, because the change will not be sent back to the wallet. I have been unable to tell if there is a similar issue with Monero paper wallets. Is this different for Monero ?
In Monero the change is sent back to the same (public) address. Therefore, it would, in theory, be possible to spend a portion of the balance of a cold storage wallet. However, currently the binaries have no feature available to sign your transaction offline. A possible solution to this is compiling yourself and using this patch. From the patch:
This change adds the ability to create a new unsigned transaction from a watch only wallet, and save it to a file. This file can then be moved to another computer/VM where a cold wallet may load it, sign it, and save it. That cold wallet does not need to have a blockchain nor daemon. The signed transaction file can then be moved back to the watch only wallet, which can load it and send it to the daemon.
Two new simplewallet commands to use it: sign_transfer (on the cold wallet) submit_transfer (on the watch only wallet)
The transfer command used on a watch only wallet now writes an unsigned transaction set in a file called 'unsigned_monero_tx' instead of submitting the tx to the daemon as a normal wallet does. The signed tx file is called 'signed_monero_tx'.
It should be noted that merging the patch results in merge conflicts, which you'd have to go through one by one.
The patch is currently being ported to Ring CT and therefore will likely be merged into master in conjunction with Ring CT.