Hola danielbmz bienvenido al foro.
Me parece que estas confundiendo como funciona la propiedad Opacity.
Opacity contiene un numero que representa un porcentaje de opacidad, siendo 0 (0 %) completamente transparente, y 1.0 (100%) completamente opaco.
Entonces en lugar de incrementar/decrementar en intervalos de 0.5, seria mas correcto incrementar en intervalos de 0.1 (10%), y nunca sobrepasar el 1.0 (100%)
Te dejo un codigo de como lo haria yo en intervalos de 10%, y nunca una opacidad menor al 50% (0.5), ya que en mi caso menos del 50% practicamente ya no se ve el formulario, sin embargo, puedes probarlo con valores menor al 50% si lo deseas.
Utilizo un switch con valores enteros ya que:
1. si utilizas if, y comparas valores de tipo double, habra errores de redondeo y es probable que no incrementes/decrementes correctamente.
2. El switch no admite valores de tipo double.
    public partial class Form1 : Form
    {
        int opaco = 5;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (opaco != 0)
                opaco--;
            switch (opaco)
            {
                case 4: this.Opacity = 0.9;
                    break;
                case 3: this.Opacity = 0.8;
                    break;
                case 2 : this.Opacity = 0.7;
                    break;
                case 1 : this.Opacity = 0.6;
                    break;
                case 0 : this.Opacity = 0.5;
                    break;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (opaco != 5)
                opaco++;
            switch (opaco)
            {
                case 5: this.Opacity = 1.0;
                    break;
                case 4: this.Opacity = 0.9;
                    break;
                case 3: this.Opacity = 0.8;
                    break;
                case 2: this.Opacity = 0.7;
                    break;
                case 1: this.Opacity = 0.6;
                    break;
            }
        }
    }
Saludos 
