Hola KeiDash.
No entiendo porqué usas Attributes para cargar una propiedad que ya existe en el objeto, prueba con esto:
Código:
protected void Page_Load(object sender, EventArgs e)
{
ImageButton btnSpain = new ImageButton();
btnSpain.Attributes.Add("ID", "btnSpain");
btnSpain.Attributes.Add("runat", "server");
btnSpain.ImageUrl = "spain.png";
pnlOptions.Controls.Add(btnSpain);
}
Si la imagen "spain.png" la tienes dentro de la carpeta "Dir_A", tendrás que poner la propiedad ImageUrl a "Dir_A/spain.png":
btnSpain.ImageUrl = "Dir_A/spain.png";
Espero que te sirva.
Un saludo.