Proponuje przypisać jedno zdarzenie Click do wszystkich button-ów w menu i posłużyć się zmienną, która będzie "pamiętać" ostatnio kliknięty button.
Prosty przykład (zmiana koloru tła - zamiana na Properties.Resources ... leży już w Twojej gestii
)

using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private static Button menu_last_clicked;
public Form1()
{
InitializeComponent();
/*
button1.Click += new EventHandler(menuButton_Click);
button2.Click += new EventHandler(menuButton_Click);
button3.Click += new EventHandler(menuButton_Click);
button4.Click += new EventHandler(menuButton_Click);
*/
foreach (Button button in new Button[] { button1, button2, button3, button4 })
{
button.Click += new EventHandler(menuButton_Click);
}
}
private void menuButton_Click(object sender, EventArgs e)
{
Button menu_current_clicked = (Button)sender;
Color color = Color.Transparent; // domyślny gdy niekliknięty
if (menu_last_clicked != null) menu_last_clicked.BackColor = color;
switch (menu_current_clicked.Name.ToString())
{
case "button1": color = Color.Gold; break;
case "button2": color = Color.Red; break;
case "button3": color = Color.ForestGreen; break;
case "button4": color = Color.BlueViolet; break;
}
menu_current_clicked.BackColor = color;
menu_last_clicked = menu_current_clicked;
}
}
}