You confusing different levels of cache. There is:
1. .net write buffer
2. os file level write buffer (cache)
3. os volume level write buffer (cache)
4. hardware write buffer (cache) in the hdd
The sample you give, cover only first two levels of cache. To be completely sure that file is written before validation all 4 level must be covered, and there is only one way to ensure this - file must be opened for writing with FILE_FLAG_WRITE_THROUGH and FILE_FLAG_NO_BUFFERING.
I can say even more, right now Nomad does not using FILE_FLAG_NO_BUFFERING flag now, and so, it is possible that validation check can be false positive, because if
FILE_FLAG_WRITE_THROUGH flag is used, data is actually written to disk, but it is also written to volume cache, so it is possible, that a little later, when file is opened for checking, data from cache will be used. This will be changed in the next version of Nomad, it will require some additional coding, but I'll add support for FILE_FLAG_NO_BUFFERING flag too.
As you see, validation check is exact performance - integrity trade, and there is no way to speed up validation and be sure that validation is correct as much as possible at the same time. But as I said earlier in most of use-cases and situations you will not need this validation.