It is possible to have the FILTER() check multiple conditions, but there are some caveats.
You're probably already aware that in your example, List::A2 can check for any one of the conditions via:
=FILTER(DATABASE::A,DATABASE::B=MENU::A1,"")
to filter on COLOURS, or:
=FILTER(DATABASE::A,DATABASE::C=MENU::A2,"")
to filter on AGE, etc.
To effect an AND condition to compare multiple values, you just have to reallise that the test condition returns an array of boolean values (TRUE/FALSE, or 1/0). You can multiply these together to perform a logical AND:
=FILTER(Database::A,
(Colors=Menu::A1)×(Age=Menu::A2)×(Name=Menu::A3),
"")
This will perform a filter returning values from Database::A that match all three Colours/Age/Name pop ups.
Note that you may have to consider empty cells. This model will always match on three, so it doesn't support, say, ANY color for Rachel, it will only match if all three categories match. that may or may not be a problem for your use case.