The short version: Your Wallet thinks the transaction has been spent. It'll try to re-broadcast it to the network periodically.
If you're using older bitcoin software, check out pywallet - you can delete the transaction and stop your client trying to re-send the transaction. This will free up the 0.4 btc for respending.
If you are using 0.9rc2 or later, there are new options:
-rescan Rescan the block chain for missing wallet transactions
-zapwallettxes Clear list of wallet transactions (diagnostic tool; implies -rescan)
The latter discards the transaction record and rescans the wallet to find them again. This gets rid of stuck / unconfirmed transactions that can't be confirmed.
Note: if the network has a copy of the transaction in the P2P network and its queued up at a miner, it could still be confirmed - in which case your client will notice and update the balances.
No matter what you do (pywallet or a 0.9 zap/rescan), a solid backup of your wallet would be in order.