I use 12, though if I'm using them correctly many are usually empty. I assign custom visible labels, for which I use just a single letter. Also I am very familiar with the custom shortcuts to switch desktops or move a window between them; I use the wrap-between-rows shortcuts for the left-right ones. On occasion, I've found that many non-KDE environments are very primitive, often supporting only a single row and not even wrapping around the ends!
There's significant overlap compared to yours but I don't quite all of the dedicated app types you do. One thing I will note is that I don't have a desktop for music - I use VLC and collapse it to the systray (I've tried other players, but kept finding audio files that would break them, and also it was often tricky to make global keyboard controls work).
Column 1:
I = internet, for general-purpose browsing that doesn't fit elsewhere.
A = application, for programs (including) that don't fit elsewhere
R = reading, for blogs and stories, assuming they don't fit better elsewhere
Column 2:
C = code, D = debug (or was it documentation? I admit I'm sloppy within a column), E = ... I don't remember, but basically I use it if I need a third virtual desktop for code-related stuff
Column 3:
G = games, H = help (usually a wiki or walkthrough), J = journal (a place for me to record my own notes, since most games don't provide a builtin way to do that, and even if they do their primitive text editor usually sucks)
Column 4:
X = extra, Y, Z - in case I need another set.