I have seen this movie quite a few times and it is one of my favourites on the topic (demons, angels, heaven, hell and all that).
Basically you know what is going to happen, but the way there is quite bend and twisted. There are a few loose ends and a few "stumbled-upon-facts" that are not perfect, but in general, it is a very well done script in my opinion.
Keanu Reeves is perfect for the role as John Constantine, but has he had any other type of role since Bill and Ted? I like him though.
I am not entirely convinced by the performance by Rachel Weisz. It is acceptable, but nothing more than that.
I am not a big fan of Tilda Swinton but she is perfect as Gabriel.
On the other hand I am very fond of Peter Stormare and he is brilliant in the role as Lucifer. He makes you really not want to go to Hell, despite not being very nasty-scary.
The effects are very well done for the time it was made. Some of the animations could maybe have been a bit better, but they are all right. The design of the demons is a bit odd in my opinion. They are scary enough, but maybe they would have been even more so if their scalp was not missing and they were not so gangly.
In general the is a very recommendable movie if you are into stuff about the before mentioned heaven/hell, angel/demon stuff. A bit scary but not creepy.