But if, hypothetically, for whatever reason a transaction never gets included in a block? What happens? Since the transaction is never confirmed, doesn't the sender still own the money? Or is it lost forever?
Possible case for this to happen would be an unofficial client allowing users to send large transactions without fees, that the official client requires fees for?
The transaction would remain unconfirmed/0 on the sender's client, but the money is not still owned by the sender since it might still be included in a block some time in the future. In theory you could patch your client to reclaim these transactions by simply assuming it never happened.
An easy way to do this now would be to export all your keys (using bitcointools) and then import them into a new wallet then start bitcoin with the -rescan option. This would reclaim the bitcoins but if the transaction ever got included later on them they would just disappear, so if you e.g. transfer your entire balance to a new account then the old transaction would never be included as it would be seen as a double spend...
This is why you need to wait for confirmations before accepting bitcoins
Will