This sounds like the Rules Engine might be a good option for you. You could add a Rules field to your page template to drive the logic.
The rule conditions to check the profile fields already exist within Sitecore, you'd just need to create your own custom logic to deny access to the page

To evaluate the rules on your page you can put some code into a pipeline processor to check the rules apply for each page. Here's an example of evaluating the rules.
public bool EvaluateRule(string fieldName, Item item)
{
var ruleContext = new RuleContext();
foreach (Rule<RuleContext> rule in RuleFactory.GetRules<RuleContext>(new[] { item }, fieldName).Rules)
{
if (rule.Condition != null)
{
var stack = new RuleStack();
rule.Condition.Evaluate(ruleContext, stack);
if (ruleContext.IsAborted)
{
continue;
}
if ((stack.Count != 0) && ((bool)stack.Pop()))
{
return true;
}
}
}
return false;
}
You could combine this with this code to deny access to the page
public class RulesProcessor : HttpRequestProcessor
{
public override void Process(HttpRequestArgs args)
{
Assert.ArgumentNotNull((object)args, "args");
if (!UserCanAccess())
{
Sitecore.Context.Item=null;
args.PermissionDenied = true;
}
}
private bool UserCanAccess()
{
EvaluateRulesLogic();
}
}