CustomWebControlを作ればいいよ
DropDownListはRenderContentsメソッド内でデータをhtmlencodeして出力しているらしい。
だからRenderContentsを↓のようにOverrideしてhtmlencodeをはずしてあげればいいはず。
public class NonHtmlEncodedDropDownList : System.Web.UI.WebControls.DropDownListを定義して
protected override void RenderContents(HtmlTextWriter output)
{
 int count = Items.Count;ListItem item;bool selected = false;
 for (int i = 0; i < count; i++)
 {
  item = Items[i];
  output.WriteBeginTag("option");
  if (item.Selected)
  {
   output.WriteAttribute("selected", "selected", false);
   selected = true;
  }
  output.WriteAttribute("value", item.Value, true);
  output.Write(">");
  string text = item.Text; ←ここで本当はhtmlencodeされているハズ
  output.Write(text);
  output.WriteEndTag("option");
  output.WriteLine();
 }
 output.Write(Text);
}
this.NonHtmlEncodedDropDownList1_1.Items.Add(new ListItem("♥", "1"))
これでハートが表示されてる。バグってたらスマソ。