A2DP is the "Advanced Audio Distribution Profile" which describes how Bluetooth devices can stream stereo-quality audio to remote devices. It enables connecting high quality audio bluetooth devices, such as headphones and speakers, to your system.
To connect to a given device you need working bluetooth on your machine and the following packages, one of which is non-free software which will require you to enable the non-free repository in your /etc/apt/source.list file.
apt-get install pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware
Once you have installed these packages, it may be necessary to restart the bluetooth and pulseaudio services:
service bluetooth restart
It is also highly recommended to install a graphical pairing tool. If you are using GNOME as your desktop environment, bluetooth-applet should already be installed from the gnome-bluetooth package.
If you are using an alternative desktop environment that does not already include graphical bluetooth tools, you can use the blueman-applet from the blueman package:
apt-get install blueman
Both of these applets will appear in the notification area of your desktop environment and will provide options for pairing and connecting to your speakers or headphones.
Pair your device as usual and give it the "trust" attribute. The "trust" attribute allows the device to automatically establish a connection to your machine when turned on and in range.
Using pavucontrol from the pavucontrol package, it is really easy to setup A2DP for your device, and map connections to it. Your paired headphones should appear as an option to output audio.
Don't forget to put it in high quality mode (A2DP) in the configuration tab. This is necessary for some devices that have mixed mode.
Any A2DP device should work out of the box.
If you still didn't bought one, the Creative WP-300 works very well and has a very very nice sound.
Bluetooth headset is connected, but ALSA/PulseAudio fails to pick up the connected device or there's no device to pick. This happens because GDM captures A2DP sink on session start, as GDM needs pulseaudio in the gdm session for accessibility. For example, the screen reader requires it. See 805414 for some discussion.
In order to prevent GDM from capturing the A2DP sink on session start, edit /var/lib/gdm3/.config/pulse/client.conf (or create it, if it doesn't exist):
autospawn = no daemon-binary = /bin/true
After that you have to grant access to this file to Debian-gdm user:
# chown Debian-gdm:Debian-gdm /var/lib/gdm3/.config/pulse/client.conf
In order to auto-connect a2dp for some devices, add this to /etc/pulse/default.pa:
Now the sound device (bluetooth headset) should be accessible through pavucontrol and standard audio device manager.