You could do something like this, using hook location global_bootstrap_complete:
PHP Code:
global $vbulletin;
if (!in_array(THIS_SCRIPT, array('usercp', 'profile', 'sendmessage')) &&
empty($vbulletin->userinfo['field1']))
{
$vbulletin->url = "profile.php?do=editprofile";
eval(print_standard_redirect("You must fill in the biography field", false, true));
}
This is checking for 'usercp', 'profile', and 'sendmessage' (the "contact us" page) so that users can get to those even if they haven't filled out the field. You may find that there are other script names you want to put in there.
You can also use a phrase for the message by changing the eval line like this:
PHP Code:
eval(print_standard_redirect('phrase_name', true, true));