I think you're going to have better results tuning your VM (virtual memory) and writeback tendencies (swappiness) than going the ionice route, though if you must.
You can use dpkg-divert to permanently move the interested binaries like /usr/bin/firefox -> /usr/bin/firefox.orig. Then you're free to create a shell script in it's place like this:
#!/bin/sh
# straight from the ionice manpage
ionice -c 2 -n 0 /usr/bin/firefox.orig $@
Pretty clear what the outcome is.
You could also go the cgroups route which is probably more cost effective in the long run, but you also open yourself up to a host of new performance based problems. Once you start metering resources you can easily starve out processes unintentionally, it'll do exactly what you tell it to do, even if you don't understand all the repercussion.
It looks like duplicity or deja-dup is running (rsync), which will of course suck up all your ioband width, some cpu too. Another option is to simply schedule it for when you're not in front of the computer, that's what I do. The best solution I've seen for io management is dm-ioband but it lives out of tree and has been under constant development for sometime.
I wish I had a blanket solution for you but there's no such thing with performance engineering. Here's a good guide from IBM, but you'll notice it that it's mostly "here's how you get started" for each subsystem, there aren't many "do this and be happy" recipes as they don't exist, every system's needs is different when it comes to performance tuning.
http://www.redbooks.ibm.com/redpapers/pdfs/redp4285.pdf