And the important part is that you want crashes. If something happens that you do not expect a crash is always better than ignoring it and doing nothing
To this statement I only agree in the develpopement phase, not in the production code.
In programm usage a crash imho is the worst of all szenarios. You gave the example of the problem with the unaccessable file. If the programm would crash because that situation isn't handled, than the one hour work really is lost. If the programm keeps working even in a crocked way, chances are that you manage to save your data in an other way. Of course there are situations when the crash is far better, but I'd say in most cases its the other way round.
Still I mostly don't use FreeAndNil, because I consider the use-after-free as the more common bug and for me less easy to detect. Less easy to detect, because it depends much more on the program flow than a double Free*. Members may be accessed from all over the programm while there are mostly only very few places a freeing occurs. And heaptrace and valgrind as far as I understand doesn't help if that buggy program part isn't executed, e.g. if it's a corner case of the code that is only reached in very specific circumstances.
So from your precondition that the program should rather crash even on the customers machine, I think FreeAndNil would be the option with more "hits".
Perhaps it would be desireable to have a compiler option to change the behaviour of Free() between Free and FreeAndNil so that both versions could be used while testing the programm without rewriting the code. Because a "bug free" program (bug free in that regards) has to work in both ways of freeing.
*There are cases when short living objects are created and freed heavily in shared varibles, then I rather go with the FreeAndNil (explicitly in these cases), so that the state of the variable is more clear and can be used for additional checks, while the management of the object doesn't rely on that.
[Edit: Thanks for this topic and the details, it's really interesting and makes me think about my coding.]