The only way I've found is to use jQuery. I'm adding some custom fields using the edit_user_profile hook. So, at the start of the code that my function drops in at the end, I include something like this. I'm not using the jQuery( document ).ready method so the code runs asap.
<script type="text/javascript">/* <![CDATA[ */
var hideFields = [ "aim", "yim", "jabber" ];
jQuery.each( jQuery( "form#your-profile tr" ), function() {
var field = jQuery( this ).find( "input,textarea,select" ).attr( "id" );
if ( hideFields.indexOf( field ) != -1 ) {
jQuery( this ).remove();
}
});
/* ]]> */</script>
I'm doing other stuff, like slipping custom fields between built-in fields, but this is the basic method. Also, having the script inline means you can conditional write JS with PHP.
Sorry for anyone not writing plugins or developing themes - I've not wrapped any of this up into a plugin, it's just for functions.php in a custom theme.