Here is a way of restoring lost bitcoins.
By design, it is impossible to tell idle bitcoins from lost ones. However, with time, there will be an increasing number of lost bitcoins, which will further increase Bitcoin's inherent deflation unnecessarily. How to avoid that? The solution is to define an expiration period for bitcoins, after which any public key that does not reappear in the block chain will expire. Then the Bitcoin client must have functionality to resend those bitcoins to their current wallet (or to any other wallet) before they expire (the client could periodically verify and warn the user, asking what to do). The expiration interval could be a very comfortable one, say, 10 years. After their expiration, the network nodes can mine those expired bitcoins again, so mining remains residually alive.
Please comment on that one.
expiration is not a feasible option.
The short answer is that expiration is meaningless when you can just create transactions a priori which move any bitcoins within your wallet indefinitely. Then the only thing you need is to have some kind of service which sends these transactions within the right time window. Of course there might be compatibility issues, where an "old" transaction may become invalid at some time in the future and I may also have missed some aspect of the transaction design which creates a burden for creating automized transactions, but that's not the point, which is: any strategy to enforce expiration usually can be circumvented somehow.
Thus to pass back the question to you: How do you uniquely identify a "lost" address?