This is possible right now with the macros in 2.10.0 (although the syntax will get cleaner with Paradise). I've posted an off-the-cuff complete working example here—I'm sure it could easily be made much more concise—which you can use like this:
val holder = NatExample.toNat(13)
And then:
scala> implicitly[holder.N =:= shapeless.Nat._13]
res0: =:=[holder.N,shapeless.Nat._13] = <function1>
It will fail with a reasonable compile-time error if you pass a non-literal integer, etc.