They are both FRP (Functional Reactive Programming) at their core - meaning they have a tree mapped out to the DOM and only render that component or children that need be rendered. (as someone pointed out earlier, Elm has abandoned the FRP principles to pursue its own idea of them)
They both compile in JavaScript (although with ClojureScript/Om library or Reagent you could get actual React objects in your js) while Elm does its own thing. I don't like that Elm has to be installed through npm although czapliki as I understand is working on a standalone installer)
Elm is nicer in my opinion because it manages state a little more coder friendly and it has a very nice (as was mentioned --) Haskell-like syntax and also you move the RuntimeErrors into the CompileTimeErrors which is much more agreeable as a developer - plus it has easier code maintainability.
On the other hand, cljs has lotsa libraries - some of them as I mentioned return actual React Components (cljs/Om matches 1:1 with R.js LifeCycle) - others simply respect the FRP and LifeCycle mentality without becoming encumbered by it. Might want to look into Om/Next with has a GraphQL way of calling for data from an endpoint and has dropped the async chans that were used in plain cljs/Om.
It's a matter of taste to be honest, but I for one would prefer Elm (having written in both languages).
If you do however go with cljs make sure you get a nice library and don't do stuff in vanilla cljs or you'll be sorry when you want to maintain 5k+ LOC.(look up Fulcro, Reagent, om, OmNext, hoplon, etc.)