The first problem is that you are storing the new form instance in a local variable, which will be discarded when you exit the handler method.
Start by moving it to class level:
private Kid_Merchant_Hero.GameSettings gameSettings = null;
Then you can use that to decide what to do:
private void SettingsBTN_Click(object sender, EventArgs e)
if (gameSettings == null)
gameSettings = new Kid_Merchant_Hero.GameSettings();
gameSettings.FormClosed += gameSettings.FormClosed;
SettingsBTN.Text = "Close";
Handle the FormClosed event to clear the form:
private void gameSettings_FormClosed(object sender, FormClosedEventArgs e)
gameSettings = null;
SettingsBTN.Text = "Open";
And you're done.