The power of global will work here:
:g/^/exe "normal ddggP"
Or, more simply (thanks @tommcdo)
:g/^/move 0
The first will match every line and for each line, delete it and paste it to the top of the file. As it moves through the file, it reverses the text.
The second similarly matches every line and moves it to the top of the file.
Note: Both of these work on the whole file and will not apply correctly to reversing a subset of the lines. See Ingo Karkat's answer for a solution that works within a range.
Description:
g
global command
/^/
match any line that has a beginning (i.e. all lines)
exe
execute the following string
"normal
perform normal mode commands
dd
delete line
gg
move to top of file
P
paste above current position
move 0
moves the current line to below line 0 (which puts it at position 1, or the first line of the file)