Is it possible to have a negative output using only ReLU activation functions, but not in the final layer?
Yes, if there's no activation function in the last layer, the weights could simply be negative there, so the network would multiply a positive value with a negative weight, therefore outputting a negative value.
There is still an activation function, but it is the identity.