Is the block timestamp reliable enough to timestamp the hash of a document? In using the blockchain to timestamp the hash of a document, so to prove that it existed before a certain time.

Is it reliable? Do you think it can stand on court? (IANAL and probably you neither) What is the worst that can happen? For example, What if many nodes change their internal clocks to hack the median of the time.
A hard fork, which is essentially a blockchain split, would result in the current blockchain to be declared as deprecated and worst of all; not verifiable in the future by the new/upgraded software which will abide by different rules and will not be able to accept pre-fork blocks and their transactions as valid, so if the above scenario would come in life then you would need to legally prove that some contract existed a few years ago in a blockchain that is now deprecated and off-line, whose value would not be much different than this of digitally signed plain-old text document. As a consequence, to prove that smart contract which was associated with a certain tx in the old-chain was signed before a certain time would be even more difficult. 

It's also important the precision of time you're after. If a few seconds or even few minutes could invalidate your claim then this will not work for you as geographically distant nodes will receive blocks at different micro-times, as it happens with all large-scale p2p networks.