So we are trying to receive something as per below:

With above set up population in From field does not work.
It seems to be working with simplified logic:

Can you please validate what we are doing wrong? Any chance that we can achieve something closer to what you can see on the first screen?
We are assuming that we may have field mainsession with value Sydney only, so we need default logic for this part a well.
Thanks,
Kacper
Use a collection-centric approach here:
#set( $peopleBySession = {
"Sydney May 05|Sydney October 19" : "Person 1",
"Sydney June 06|Sydney July 17|Sydney August 19" : "Person 2",
".*Sydney.*" : "Person 3",
".*Munich.*" : "Person 4",
".*Warsaw.*" : "Person 5",
".*Madrid.*" : "Person 6",
".*" : "Some other persion"
} )
#foreach( $rule in $peopleBySession.entrySet() )
#if( $lead.session.matches($rule.getKey()) )
$rule.getValue()
#break
#end
#end
Also, remember (I seem to say this on every Velocity thread) you should not be using formal notation, let alone quoted formal notation, in simple #set statements.
This:
#set( $mainsession = "${lead.session}" )
should be this:
#set( $mainsession = $lead.session )
(Although you don't necessarily need an intermediate variable at all if you reduce repetition.)