In your example, myColumnName is an object so your add routine is trying to add the string version of an object to a columns collection when it is looking for the object itself:
Try this:
Code Snippet
DataGridViewImageColumn myColumnName = new DataGridViewImageColumn();
myColumnName.Name =
"col" + "1";
dataGridView1.Columns.Add(myColumnName, myColumnName.Name);