INPUT checkbox checked property is kind of funny. This is because the name of the property also becomes the value of the property as shown in the example below:

input type="checkbox" checked = "checked"

or simply

input type="checkbox" checked

So, if you want to dynamically generate the checkbox at runtime and not make the checkbox checked then simply remove the checked property as shown below:

bool showChecked = true;

Literal lit = new Literal();

lit.Text = "<input type=\"checkbox\" " + (showChecked == true ? "Checked" : String.Empty) +"/>" ;

this.pn1.Controls.Add(lit);

this.pn1.DataBind();

In my opinion the checked property should have boolean value. So, we can say something like the following:

<input type=checkbox checked = true/false />

:)