Ciao, partendo dal tuo codice (usa sempre i tag code se no è poco leggibile il codice) :

codice:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace galleria_immagini
{
 public partial class Form1 : Form
    {

        public static string targetDirectory;
        string[] immagini;//<---qui va solo la dichiarazione
        int contatore = 0;

        public Form1()
        {
            InitializeComponent();
        }


        public void but_sfoglia_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                targetDirectory = folderBrowserDialog1.SelectedPath;
                immagini = Directory.GetFiles(targetDirectory)
                    .Where(s => s.EndsWith(".png") || s.EndsWith(".jpg") || s.EndsWith(".gif")).ToArray(); //<--qui carichi i path delle immagini (solo quelle...) dando come filtro le estensioni
            }
        }


        private void but_visualizza_Click(object sender, EventArgs e)
        {
            if (immagini == null)//<---qui controlli se è stato già scelto il percorso
            {
                MessageBox.Show("Non hai selezionato il percorso del file immagine da visualizzare!");

            }
            else
            {
                if (contatore < 0 || contatore >= immagini.Length) contatore = 0;//<--qui controlli che il contatore non sia fuori range
                pictureBox1.Image = Image.FromFile(immagini[contatore]);//<--- qui carichi l'immagine (partendo dalla prima)
            }

        }

        private void checkAdatta_CheckedChanged(object sender, EventArgs e)
        {
            if (checkAdatta.Checked)
            {
                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }
            else
            {
                pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
            }
        }

        private void but_avanti_Click(object sender, EventArgs e)
        {
            if (contatore >= immagini.Length-1) contatore = -1;//<-- se sei arrivato all'ultima immagine riparti dala prima
            pictureBox1.Image = Image.FromFile(immagini[++contatore]);//<--aumenti il contatore
        }

        private void but_indietro_Click(object sender, EventArgs e)
        {
            if (contatore < 1) contatore = immagini.Length;//<-- se sei arrivato alla prima immagine riparti dall'ultima
            pictureBox1.Image = Image.FromFile(immagini[--contatore]);//<---dimuinuisci il contatore
        }
    }
}