The attached file implements sortable headings. I would be grateful if some of you who run from source could try it.
You will note that the up and down arrows turn on and off. A possible surprise: you can't move new columns. Reason: they don't exist yet so their order cannot be stored.
Decompress it and put it in <calibre source>/src/calibre/gui2/preferences, replacing the existing columns.py. I will submit it to Kovid once someone other than me has tried it.
I suggest you make a backup of your library just in case something is broken. For example, my first version threw away all column order information. The only way to get it back was to restore from backup.
EDIT: zip file removed. The changes are now in calibre source.