Go relies on LLVM race-detector. Similarly, with Kotlin you can use any JVM-based race-detectors. I personally highly recommend DRD: https://code.devexperts.com/display/DRD/About+Data+Race+Detector Unfortunately, most of its documentation is in Russian, but it is the best such JVM-based tool out there (the fastest one). In some future, with Kotlin Native, you'll be able to use LLVM race-detector, too.
The similar, but more complicated, story is with deadlocks. The detection of deadlocks that did happen is built into JVM. To detect potential deadlocks, I'd recommend dlcheck: https://github.com/Devexperts/dlcheck While built-in JVM detector will not see Mutex-based deadlocks, it should be possible to make dlcheck coroutine-aware and support Mutex, too.
The deadlocks you can get into with channels are more nuanced. Go deadlock detector does a really bad job on detecting them. It really works only on a slide-ware kind of code. It is of no use in complex applications. It is easy to replicate its functionality in Kotlin, but I'm not sure it is worth it. Anyway, Rob Pike asserts that you rarely get into communication deadlocks in practice, so, again, It does not seem that there is a lot of motivation to work in that direction.