Prova questo programmino che ho realizzato.

codice:
import java.awt.*;
import java.net.*;
import javax.imageio.*;
import javax.swing.*;

public class TestFrame extends JFrame
{
    public TestFrame ()
    {
        super ("Test Frame");

        setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        setSize (300, 300);

        try
        {
            Image img = ImageIO.read (new URL ("http://img78.imageshack.us/img78/7571/backua5.jpg"));

            JPanel panel = new BackgroundPanel (img);
            setContentPane (panel);
        }
        catch (Exception e)
        {
            System.out.println (e);
        }

        JTextField textField1 = new JTextField ("Hello World!");
        JTextArea textArea = new JTextArea ("Hello World!");
        JTextField textField2 = new JTextField ("Hello World!");
        JScrollPane scrollPane = new JScrollPane (textArea);

        textField1.setOpaque (false);
        textArea.setOpaque (false);
        textField2.setOpaque (false);
        scrollPane.getViewport().setOpaque (false);
        scrollPane.setOpaque (false);

        Container contentPane = getContentPane ();
        contentPane.add (textField1, BorderLayout.NORTH);
        contentPane.add (scrollPane, BorderLayout.CENTER);
        contentPane.add (textField2, BorderLayout.SOUTH);
    }

    public static void main (String[] args)
    {
        SwingUtilities.invokeLater (new Runnable ()
        {
            public void run ()
            {
                TestFrame f = new TestFrame ();
                f.setVisible (true);
            }
        });
    }
}


class BackgroundPanel extends JPanel
{
    private Image img;

    public BackgroundPanel (Image img)
    {
        super (new BorderLayout ());
        this.img = img;
    }

    public void paintComponent (Graphics g)
    {
        super.paintComponent (g);

        g.drawImage (img, 0, 0, this);
    }
}
Ho semplicemente definito un panel di background in cui paintComponent() disegna la immagine e questo panel l'ho impostato come content-pane del JFrame. Dopodiché nel content-pane ho aggiunto 2 JTextField e 1 JTextArea (in un JScrollPane) impostandoli come trasparenti (non opachi).