I have proposed a solution which I believe would eliminate some of the problems with existing PoS systems. I call it Proof-of-Connection.
https://bitcointalksearch.org/topic/proposal-for-a-new-proof-of-stake-mining-system-with-proof-of-connection-553414Basically, this system requires "ping" transactions to be submitted to the network at random intervals. A wallet node must be connected to the network in order to receive the trigger for these transactions, and to be able to send them. Upon successful inclusion of these PoC transactions into a block, that address's Stake-Days are reduced to 0, but their stake earnings are paid out to them in the coinbase transaction for that block. Of course, mining a PoS/PoC block will also reset your Stake-Days to 0. Most importantly, your Stake-Days will ALSO be reduced to 0 if you DON'T send the PoC transaction in a timely manner. So you will not be able to let your coins lie dormant and and let your Stake-Days accumulate without being connected to the network. You MUST be actively connected in order for your stake to accumulate.
I believe that this effectively prevents the Stake Accumulation problem. No matter what, your Stake-Days will be reduced to 0 on a regular, random basis. This should require a true 51% coin holdings in order to successfully pull off a 51% attack.
Furthermore, the PoC concept can be used to implement a rough time-synchronization enforcement. In this paradigm, the timestamp can be moved forward a small amount, but never backwards. The timestamp of the most recently generated block will serve as a reference to all connected nodes. By sending the PoC transactions, nodes indicate their acceptance of this timestamp, and start counting up from that point. It is understood that transactions not matching the current timestamp within X allowed variance, will be discarded. It is understand that new blocks not matching the current timestamp within X allowed variance, will be discarded. This is needed because of the way that PoS mining works. The nonce used for block generation is based on the timestamp. One nonce per second. If people are able to manipulate time and create blocks with timestamp (nonce) far out into the future, it essentially turns into a PoW coin, because people could increment the seconds an arbitrary length of time until they find a block. If their hardware is very fast, it would be easy to mine block after block. A basic sanity check on the timestamp prevents this from occurring, and the only way to implement a basic timestamp sanity check is to require some level of clock synchronization.
If two competing blocks with roughly the same timestamp are generated, the one with more Stake-Days Destroyed will be chosen. (Note, as is discussed in the linked thread, Stake-Days are not destroyed when simply sending coins in a standard transaction, as in Peercoin.)
A further refinement (not yet posted in the linked thread) is that the successful miner/minter of a block will obtain transaction fees based not only on the standard transactions, but also on the PoC transactions included in their block. This incentivizes them not to discard PoC transactions. These fees are true transaction fees for standard transactions, but the PoC transaction fees are generated in the coinbase transaction. Yes, this means that somebody with a tiny amount of coins could potentially earn a multiple of their current holdings through transaction fees. However, they would have to be very lucky, as their Stake-Days will always be very small, thus raising their effective PoS mining difficulty.