Sometimes in a WordPress network, you may wish to have a theme enabled just for one site, and restrict access to this theme by other sites. The main blog is a good example, because you do not want users able to choose the exact same layout as the main blog with any custom coding it may have.
First, make sure the theme is not enabled network-wide. If you have just uploaded the theme, it will be like this by default. If it is already enabled, you need to visit Network Admin -> Themes. There’s two handy sections to show which themes are enabled and which are not.
Just click the “Network Disable” link if there is one.
To enable the theme for use on just one site, go to Network Admin > Sites. Find the site in question, hover over the name to drop down menus, and click Edit. This will bring you to a page to edit all variables for this blog.
There are tabs to break down the options into sections. Click on the Themes tab and you’ll be presented with a list of all disabled themes installed on the network. This list will also include themes that are enabled for single sub sites. Check the one you’d like to enable for this blog, scroll down, and click the Apply button.
When the admin of this site goes to their Appearance menu, they should now see the new theme as available for activation. Other site admins will not be able to see it in their Appearance menus. You can test this as a super admin by visiting the backend admin area of the site in question.
If a theme is active on any sub site, and the Super Admin network disables the theme, the site using that theme will remain unchanged. In other words, the theme will stay active on the site. It is only when the site owner switches away from that theme to another, that the disabled theme will be removed from the Appearance menu.