I think you can certainly view JavaFX and Flex as competitors (which probably explains the presence of James Ward in this forum
).
I haven't used Flex as much as JavaFX, but here are my general impressions:
Flex is more mature having been on the market longer. In my opinion, Flex has a better deployment story particularly for applications running in the browser. I give the edge in tooling to Flex Builder over the NetBeans JavaFX plugin. And if you need to play Flash video and know that it will just work, then Flex is your best bet at the moment.
On the other hand, JavaFX takes full advantage of the power of the JVM (multi-threading in a Flex app is not well supported, for example). I also think that JavaFX solves some problems in a more elegant way than Flex. The ability to bind to an arbitrary expression in JavaFX is very powerful. Further, JavaFX's declarative syntax is, in my opinion, far superior to having to use XML to declare your UI as in Flex.
To summarize, Flex is a nice mature toolkit but it is evolutionary whereas JavaFX is more revolutionary. Hopefully the cliche police aren't lurking here.
Dean