I believe this will be addressed in the 1.6 release, but I couldn't wait...
I've done something like this for our site (
www.invisaleash.com). We have products available to the general public and then specific items available to wholesalers (with their own pricing). When you sign up for a wholesale account, you get a role named "Wholesale" attached to your account.
I didn't tie it to a category though (because products can be in multiple categories and such) -- i tied it right to the products. I created a new "product type" named "Wholesale", and flagged the appropriate items as such. I had to manually insert an record in the nop_ProductType table -- couldn't see where to do that in the UI.
That was the easy part -- next, I had to modify a series of stored procedures and several of the class/code-behind files to implement the limitations. I don't recall all the changes off hand (I have it documented elsewhere), but basically, I ended up passing the logged in customer ID down to the stored procedures so they could limit the results. If the customer wasn't logged in, I passed a 0 (zero) down and considered that "anonymous", or as a standard retail visitor.
If it's something you can't wait for, let me know and I can try to put together more info on our implementation.
Jerry