Looks like no one knows of an elegant or accurate solution, but i have come with an approach, that might not be bright, but at least seems to be accurate, somehow. and i decided to share it with everyone.
According to my researches, .NET native images are identified, in a partial way, by the .ni. name, so, System.Forms.dll has a System.Forms.ni.dll native image, and then, MyApplication.exe has an MyApplication.ni.exe native image, if exist.
Also, to give us another hint, we know that all native images are located on the assembly directory under the %windir%.
Now, we can just query all the modules loaded by our application, and see if one of them is "our native file" application name.
Dim ImNative As Boolean = False
Dim MyFile As String = IO.Path.GetFileName(Application.ExecutablePath).ToLower.Replace(".exe", ".ni.exe").Trim
For Each m As ProcessModule In Process.GetCurrentProcess.Modules
If MyFile.ToLower = IO.Path.GetFileName(m.FileName).ToLower AndAlso m.FileName.ToLower.Contains("\assembly\nativeimages") Then
ImNative = True : Exit For
End If
Next
If ImNative Then Msgbox("Yes, you are running a native image of this assembly.")