時刻の種類(Kindプロパティの値)はインスタンス作成時に設定された後は一切変更することができません。 ですが、DateTime.SpecifyKindメソッドを使うと日時部分はそのままで、Kindプロパティの値だけを指定した値に変更したDateTimeを取得することが出来ます。

DateTime.SpecifyKindメソッドを使って時刻の種類を変更する
using System;

class Sample {
  static void Main()
  {
    var a = new DateTime(2013, 4, 1, 15, 0, 30, 123, DateTimeKind.Local);
    var b = new DateTime(2013, 4, 1, 15, 0, 30, 123, DateTimeKind.Utc);
    var c = new DateTime(2013, 4, 1, 15, 0, 30, 123); // DateTimeKind.Unspecified

    var kinds = new[] {
      DateTimeKind.Local,
      DateTimeKind.Utc,
      DateTimeKind.Unspecified,
    };

    foreach (var kind in kinds) {
      Console.WriteLine("SpecifyKind({0})", kind);

      foreach (DateTime dt in new DateTime[] {a, b, c}) {
        // SpecifyKindメソッドでKindの値を変更したDateTimeを取得する
        DateTime dtNew = DateTime.SpecifyKind(dt, kind);

        Console.WriteLine("{0} {1,-12} -> {2} {3}", dt, dt.Kind, dtNew, dtNew.Kind);
      }

      Console.WriteLine();
    }
  }
}
実行結果
SpecifyKind(Local)
2013/04/01 15:00:30 Local        -> 2013/04/01 15:00:30 Local
2013/04/01 15:00:30 Utc          -> 2013/04/01 15:00:30 Local
2013/04/01 15:00:30 Unspecified  -> 2013/04/01 15:00:30 Local

SpecifyKind(Utc)
2013/04/01 15:00:30 Local        -> 2013/04/01 15:00:30 Utc
2013/04/01 15:00:30 Utc          -> 2013/04/01 15:00:30 Utc
2013/04/01 15:00:30 Unspecified  -> 2013/04/01 15:00:30 Utc

SpecifyKind(Unspecified)
2013/04/01 15:00:30 Local        -> 2013/04/01 15:00:30 Unspecified
2013/04/01 15:00:30 Utc          -> 2013/04/01 15:00:30 Unspecified
2013/04/01 15:00:30 Unspecified  -> 2013/04/01 15:00:30 Unspecified

このメソッドはDateTimeの日時の部分は変更せず、Kindプロパティの値のみを変更します。 つまり、変更に際してUTCとローカル時刻間の時差は考慮されません。 そのため、このメソッドの主な目的は、DateTimeから時刻の種類の情報を切り離したい場合、あるいは時刻の種類が設定されていない(Unspecifiedな)状態のDateTimeに時刻の種類を設定することになります。

一方、UTCとローカル時刻間での時差を考慮した上で変更したい場合はToUniversalTime・ToLocalTimeメソッドを使います。