Uff, cercando e raffazzonando qualcosa l'ho ottenuto, certo che tocca stare attenti, altrimenti Visual Studio s'attapira

Vi scrivo come ho risolto:

Questo l'ho messo sotto la dichiarazione dei controlli, subito dopo l'apertura della classe Form:
codice:
private System.Windows.Forms.Label[] lblBottoniLST;
L'inizializzazione di questi controlli array non va messa dentro InitializeComponent(), altrimenti il compilatore s'avvelena.

Ovviamente l'ho messo dentro l'evento Form_load:
codice:
this.lblBottoniLST = new Label[1];
for(int i=0;i<lblBottoniLST.Length;i++)
{
    this.lblBottoniLST[i]=new System.Windows.Forms.Label();
    this.lblBottoniLST[i].Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
    if(i==0)
        this.lblBottoniLST[i].Image = picBottone_hidden.Image;
    else
        this.lblBottoniLST[i].Image = picSfondoBottone_hidden.Image;
    if(i==0)
        this.lblBottoniLST[i].Location = new System.Drawing.Point(0, 2);
    else
        this.lblBottoniLST[i].Location = new System.Drawing.Point(this.lblBottoniLST[i-1].Location.X+92, 2);
    this.lblBottoniLST[i].Name = "lblBottoniLST"+i.ToString();
    this.lblBottoniLST[i].Size = new System.Drawing.Size(92, 21);
    this.lblBottoniLST[i].TabIndex = 2;
    this.lblBottoniLST[i].Text = "Bottone "+i.ToString();
    this.lblBottoniLST[i].TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
    this.lblBottoniLST[i].Click += new System.EventHandler(this.lblBottoniLST_Click);
    this.Controls.Add(this.lblBottoniLST[i]);
    lblBottoniLST[i].BringToFront();
}
lblBottoniLST[0].Text="Report";
La label in questione viene utilizzata come bottone, ha quindi due sfondi, quello attivo e quello disattivato.

Nel mio caso per il momento ho messo una sola label, ma se ne possono inserire quante se ne vuole aumentanto il numero nel new Label[], basta poi gestire la text per il testo visualizzato.

L'evento lblBottoniLST_Click va inserito a mano, ora vi scrivo come ho gestito l'evento che se clicco su un pulsante quello mi diventa attivo e gli altri disattivati:
codice:
private void lblBottoniLST_Click(object sender, System.EventArgs e)
{
    Label tmp=(Label)sender;
    for(int i=0;i<lblBottoniLST.Length;i++)
    {
        if(tmp.Name.Equals(lblBottoniLST[i].Name))
        {
            lblBottoniLST[i].Image=picBottone_hidden.Image;
        }
        else
        {
            lblBottoniLST[i].Image=picSfondoBottone_hidden.Image;
        }
    }
}
Sender è l'oggetto Label che ho cliccato, lo casto per farlo diventare Label e confronto il Name di sender con tutti i Name dei lblBottoniLST.

Come vedete la gestione degli eventi è molto meno penosa di quento mi potevo immaginare