If you can give your logic a rest for a while, you're most certainly bound to enjoy this movie. There are just a few plot-holes than what we get to see in an average movie. I found the movie thoroughly interesting; it succeeded in keeping me on the edge of my seat (just a figure of speech, I don't mean it literally) from the beginning credits to the ending.
While Julianne Moore plays the role of Cara incredibly, the actor playing Adam/ David/Wesley's character isn't too convincing and the actor playing Cara's father's role also seemed a bit too lame. The rest of the cast delivers relatively good performances.
I'd certainly recommend this movie because it's way better than what we get to see in the movies of this genre these days around.