the number of subD’s you can get is a relative number.
i.e.
a box with 6 sides at subD level 1 has 384 polygons at subD level 4.
a mesh with 600 at subD levev 1 has 38,400 polygons at subD level 4.
So you can see that saying I’m only at level 4 doesn’t mean much, because level 4 is a relative term. Saying I have a mesh at 3million polygons is a specific number.
Anyway, Zbrush defaults the max polygons per mesh to the number that your machine can handle. So when you tell Zbrush to let you go to 30 million all you told Zbrush to do was try to use more RAM than you have available. I let Zbrush have 4gigs of RAM and I still only set my max poly per mesh at 9.96 million.
For what you want to do you basically need to retopologize your mesh to get a better distribution of polygons. You could also break the mesh into subtools. Each subtool has it’s own subD levels and each can go up to what your max poly per mesh setting is at (keep it at what Zbrush defaults to). That way each horn could have 1million or so, the head could have 2 million, each eye .5million. That way you can get the polygons you need and not crush your system. I personally don’t like the slowdown I see after when I hit +5million so I always break my meshes if they are going to get that high.
If you don’t know how to retopo do a search, there are a ton threads on it. NickZ and Cannedmushrooms also have video tutorials as well I believe.
To answer your question…yes and no. You are sort of doing something wrong, and yes you need more RAM.