I'm using an MSI bluetooth dongle I found lying around, which 2.6 kernel hotplug identified and installed the drivers for without my having to do anything.
Install bluez and the bluez-utils package. This gives you hcitool, which you can use to scan for bluetooth devices (hcitool scan). It also provides you with sdptool, which you can use to browse bluetooth devices for available services.
To transfer files to and from the phone via bluetooth, there's obexftp and obexftpd. However, I've not got these to work yet. I'm not sure if I'm juts connecting on the wrong channel (it seems to insist on using channel 11 whatever I tell it to do), but for whatever reason, it won't connect. Using the obex_test program from openobex-apps, I can succesfully transfer files to and fro using obex, so it obviously works in one way. I just can't use obexftp. Which is annoying, as there's a FUSE module allowing me to mount my phone into the filesystem, which could be quite useful.
For transferring files on a day to day basis, I use the gnome-bluetooth package. This runs in the background, leaving a little icon in the gnome system tray, listening for connections (it automatically registers itself with the sdpd running on the local machine). If I try and send a file to my computer using the phone, it will pop up a little prompt asking if I want to accept the file, and if I should always accept files from this device. Likewise, there's a nautilus plugin, allowing you to send files via bluetooth.
For PIM-like goodness, I use evolution and multisync. The 9500 supports SyncML which can be used for this. Apparently you can do SyncML over obex, but I can't see the option to do that, so I'm using it over wifi. I set up a connector in multisync, with syncml at one end running as a server on the local machine, and evolution at the other end. I then add a new sync profile in the tools/sync section, syncing over the internet. I set the machine's IP address, and give it the username and password that I told multisync to use. I found I had to change the remote database name from "contacts" to "addressbook" in this. I also had to enable some option in multisync to handle badly encoded strings, wihch Symbian devices use. Once this had been done, I could select that sync profile, and it would update my evolution contacts and calendar entries from the phone, and vice versa. Took a few seconds. If I make this the default profile, I can sync with my machine just by holding chr and pressing the sync button.
Multisync supports SyncML over https, but the 9500 doesn't seem to have this option, which is a shame.
It looks as though the 9500 has the option to act as a SyncML server (at least, according to sdptool, it supports the syncml server bluetooth profile). but I'm not sure how to get this to work either.