Show or hide custom data set
Some forms in CiviCRM (ex: contribution/membership) may have some show/hide options, for, say, organisational memberships, but in general, it's not possible to do it using the admin interface, and doing it programmatically with jQuery is recommended.

Another option, is to use the webform and webform_civicrm Drupal modules to create a custom form. The latest version of webform_civicrm makes it possible to pretty much rewrite most of the contribution/membership forms. Webform has ways to show/hide fields conditionally.

If you want to do it the jQuery way, depending on whether it is a Drupal form (ex: user registration form), or a CiviCRM form (contribution/membership form), you can put the javascript snippet in your Drupal theme, or in a CiviCRM template.

For example, if it's a Drupal form, you can put it in the equivalent of sites/example.org/themes/mytheme/js/custom.js :

/**
 * Show/hide the appropriate custom fields for a membership level.
 */
Drupal.behaviors.myThemeToggleMembershipFields = {
  attach: function (context, settings) {
    $('#my_membership_type_input').change(function() {
      var v = $(this).val();

      if (v == 1) {
        $('..fields for type 1..').show();
        $('.. other fields..').hide();
      }
      else if (v == 2) {
        // etc.
      }          
    });
  }
})(jQuery);