JPA has no way, any kind of momentum.
That's why folks are writing blogs like this, because they aren't using JPA and EJB3.
That's why Sun, Oracle, JBoss, and BEA (at a minimum) have working EJB 3 containers right now, because they like pushing a dead horse. Because they enjoy writing code that nobody wants, and they're all deluded by the same mass-hysteria. No doubt they're all just drones of the Java Enterprise Conspiracy without an independent thought or thinking in the bunch. No doubt the fact that they're using at a mimimum of 3 different EJB 3 ORM implementations comes to play in to this as well.
JPA is a minor leap for any of the zillions of Hibernate users if they choose to migrate to the platform. JPA via EJB3 is also an easy migration for anyone running EJB 2 appplications that want to slowly convert over to the new specification, since their EJB 2 code still works in EJB 3 containers they don't have to toss it all out on day one.
JPA is also going to be supported by your application server vendors, more one stop shopping.
You disregard the marketing power that Sun has with EJB and Java. JPA has several implementations, and its inclusion within EJB 3 will make it magically creep in to organizations which will then have it available, get training on it with all of the other EJB training, from all of the EJB trainers, etc.
Just like no matter what nay sayers et al may say about Windows Vista, it WILL have a gazillion installations come next year. JPA is the same way. It's riding along for free with all of the application servers, and it's making them easier to use to boot.
JPA is here to stay.
2nd) JPA and EJB3 was promoted by big Relational Database vendors to ensure Database Lock-In.
By this I assume you mean to imply "database lock-in" as "RELATIONAL database lock-in" rather than "Oracle" or "DB2" lock-in.
First off, most companies have no problem with database lock-in. It's nice having a central store for ones data, it's nice to have it consistently managed, it's nice to have it consistently accessed. Generic applications may have to worry about DB portablilty, but in-house application writers and designers don't. They embrace their chosen database with zeal and tune and tweak and squeeze everything they can out of it. It takes a GREAT effort to get an organization to change their database, particularly in this day and age where data volumes are getting larger and larger.
I won't even start the RDBMS vs ODBMS debate, save that there are zillions of programs that can reasonably connect and do Interesting Things to most any RDBMS on the market, particularly through wonders like ODBC and JDBC, by leveraging the SQL which is Standard Enough, particularly for data query. ODBMS's simply don't have that benefit with no real standard for 3rd party tools to leverage.
3rd) There is no big winner in Java Persistence it is just a very fragmented
Sure there is. JDBC. HUGE winner. Most everything else leverages off of that.
But with the JPA being standard in EJB 3, as well as usable in generic java apps, plus the volumes of documentation and books and whatnot that will be provided, JPA will take off from the great start Hibernate gave it and just get bigger as its placed in front of mainstream Java folks.
JDO may well be as good or better than JPA, I've never used it. However, JDO never got the traction that JPA through EJB 3 has right now. You don't need a better mousetrap to become popular, you need marketing. EJB 3 and JPA has the marketing and implementations that JDO never had.