Just use a parameterised query (as you should with
all user input to prevent SQL Injection problems) and pass DBNull.Value:
using (SqlCommand cmd = new SqlCommand("INSERT INTO MyTable (MyColumn) VALUES (@VAL)", con))
{
object val = tbUserInput.Text;
if (string.IsNullOrWhiteSpace(tbUserInput.Text)) val = DBNull.Value;
cmd.Parameters.AddWithValue("@VAL", val);
...
}