Here are some of my thoughts:
1. Since the chosen single node for each block is deterministic, then in theory it could be very vulnerable to botnet DDoS attack. More generally it lacks fault tolerance, which is critically needed in real world systems. A redesign to have simultaneous disjoint blocks from multiple delegates can't be allowed because there could be double-spends in the presumed disjoint blocks.
2. For DPOS, this is not decentralized control, because the minority has to accept the will of the majority on the election of delegate DPOS nodes, i.e. the permissionless attribute can be lost such as ChainAnchor being planned for ButtCON. No one can just standup a full node at-will. This also means there isn't really competition in terms of a free market rate for transaction fees.
Btw, Bitcoin-NG accomplishes basically the same deterministic node per block and with decentralized control over the selection of the delegate in real-time employing PoW, yet with chain reorganization issues.
3. The maximum speed (minimum delay) of confirmations is lower bounded by the slowest latency of block propagation to every DPOS node, because otherwise some nodes can't keep up. This can be reasonably fast say several seconds if you've got a very organized set of delegate nodes (but then you really don't have decentralized control), but this is not fast enough for some types of instant microtransactions.
4. Zero-confirmation double-spend transactions (aka Finney Attack) are even more plausible, because a colluding delegate node knows deterministically when it will win the block. Note block periods can be reasonably fast in DPOS, so 0-conf is probably not needed although not fast enough for some types of instant microtransactions, although such probably wouldn't be Finney attacked due to their small values.
5. Proof-of-stake is not a secure consensus algorithm, because for example the nothing-at-stake problem. We compiled a laundry list of flaws in proof-of-stake. Note I recently made a suggestion to jl777 and we mutually designed how to record check points for DPoS coins in a PoW block chain.
Edit: Steemit is pioneering combining PoW and DPOS in another way, and do take note that this doesn't seem to fix the issues I enumerated above although it mitigates somewhat issue #2 except doesn't solve the economics of centralization of PoW issue:
...
With Steem, block production is done in rounds. Each round 21 witnesses are selected to
create and sign blocks of transactions. Nineteen (19) of these witnesses are selected by
approval voting, one is selected by a computational proof-of-work, and one is timeshared
by every witness that didn’t make it into the top 19 proportional to their total votes. The 21
active witnesses are shuffled every round to prevent any one witness from constantly
ignoring blocks produced by the same witness placed before.
This process is designed to provide the best reliability while ensuring that everyone has the
potential to participate in block production regardless of whether they are popular enough
to get voted to the top. People have three options to overcome censorship by the top 19
elected witnesses: patiently wait in line with everyone else not in the top 19, purchase
enough computational power to solve a proof of work faster than others, or purchase more
SP to improve voting power. Generally speaking, applying censorship is a good way for
elected witnesses to lose their job and therefore, it is unlikely to be a real problem on the
Steem network.
Because the active witnesses are known in advance, Steem is able to schedule witnesses to
produce blocks every 3 seconds. Witnesses synchronize their block production via the NTP
protocol. A variation of this algorithm has been in use by the BitShares network for over a
year where it has been proven to be reliable.
Mining in Steem
Traditional proof of work blockchains combine block production with the solving of a proof
of work. Because the process of solving a proof of work takes an unpredictable amount of
time, the result is unpredictable block production times. Steem aims to have consistent and
reliable block production every 3 seconds with almost no potential for forks.
To achieve this Steem separates block production from solving of proof of work. When a
miner solves a proof of work for Steem, they broadcast a transaction containing the work.
The next scheduled witness includes the transaction into the blockchain. When the
transaction is included the miner is added to the queue of miners scheduled to produce
blocks. Each round one miner is popped from the queue and included in the active set of
witnesses. The miner gets paid when they produce a block at the time they are scheduled.
The difficulty of the proof of work doubles every time the queue length grows by 4. Because
one miner is popped from the queue every round, and each round takes 21 * 3 = 63 seconds,
the difficulty automatically halves if no proof of work is found in no more than 21 * 3 * 4 =
252 seconds.