have just had exactly the same problem for months and have finally found the fault. the flexible coupling between the selector rod in the centre tunnel and the gearbox (underneath the car), has two recessed washers that fit into the holes either end. make sure these are not on the outside of the fitting, they must be in between the coupling and the selector rods. as soon as i swapped these round reverse was back!
you wouldn't think it would make any difference but it does.
i hope this is the case for you as it is a really easy fix.
good luck!