One thing I noticed when programming my Genie garage door openers is only the middle button on the 3 button remote would work when training/programming the car. I used the same middle button on one of my remotes to program all 3 Homelink memory buttons in my car. i.e. Each Homelink button in the car opens a separate garage door even though I used only the middle button on the same remote to "train" all 3 Homelink buttons. If you have single button Genie remotes you can use the same remote to program all 3 Homelink buttons in the car.
1) Use the BMW Homelink training instructions to program a memory button in your car. Like TopDownInFL said, you may need to hold the remote 3" away or maybe 24", buttons facing up or maybe facing down. You need to experiment.
2) Once the car has "learned" your remote (you know this based on the correct flashing light sequence mentioned in the Homelink instructions), press the "add remote" button on the Genie opener in the garage then run out and press-and-hold the button you programmed in your BMW. You need to check the Genie instructions on the correct method to add a new remote. I believe you need to press the Homelink button twice.
3) Use the same procedure that worked for you in step 1) to program the next memory button in your BMW. Then repeat step 2) on your next garage opener.
Straight lines are for fast cars...turns are for fast drivers
'04 M3 - track
'06 650i Cab - daily driver
'02 Highlander - kid hauler
'01 330Ci - winter beater