I had the same problem but solved it by carefully examining what i was doing.
While going upside down I was looking at the direction I was going (straight to the bottom). The trouble is that my neck was stretched out. put it another way: If you had flipped me over it would've been like I was looking above my head, not straight out in front of my chest.
I'll try a little ASCII drawing. Imagine that's me going straight down with my legs spread apart.
I was doing this:
o
|
/ Looking down
I should've been doing this:
/
|
o -> Looking straight in front
I think that stretching my neck to look above me was preventing me from equalizing. Probably blocking those tubes.
indeed a classic problem, thanks for mentioning.
You should be looking out into the blue, not down. Some even say tuck chin in to chest, but personally this is too much.
on a long shot, close your eyes. if you know the bottom is a long way down closing the eyes give you nothing to strain to look at and helps you relax (does me anyway).
at a certain depth (way past failure depth) a peak down, with the extension of head, and you will loose your mouthfill. Knowing the depth and setting a depth alarm (that you can actually hear, no too many of those around) will allow the eyes closed approach for longer, or at least not to be peeking out for the bottom.
If you are a spearo, you probably dive quite often at a certain depth, counting finstrokes is another great way to decide when to peek for the bottom.
try:
duck dive
close eyes, head in neutral position
5 powerful but smooth kicks
5 weak kicks
freefall 10 seconds
peek for bottom (you should be at 20m or so by now)