.NET Framework には IME の状態を取得するメソッドは無かったと思いますが、Windows の IMM API を使えば取得することができます。
以下のような感じです。
[DllImport("Imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hWnd);
[DllImport("Imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr hIMC);
[DllImport("Imm32.dll")]
public static extern bool ImmReleaseContext(IntPtr hWnd, IntPtr hIMC);
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
var hIMC = ImmGetContext(this.Handle);
var status = ImmGetOpenStatus(hIMC);
ImmReleaseContext(this.Handle, hIMC);
System.Diagnostics.Debug.WriteLine("IME は " + (status ? "オン" : "オフ"));
}