So here's what i'm planning to do - if anyone spots any huge flaws can they point them out?
1) calculate two paths using the BSDF sample methods, one for the light and one for the eye. I'm currently terminating the path if it exits the material or exceeds a set number of bounces (i'll add in russian roulette or something later)
2) To constuct sub-paths I go through layer by layer and connect every part of the eye path with every part of the light path that reach that layer - so effectively my visibility test is (path vertices in same layer) ? 1: 0
3) Given a valid subpath I calculate the total f for that subpath.
4) To calculate the probability of that path being sampled I start with i (from 0 to path length):
4a) accumulate the individual sampling pdfs (multiply) with the first i probabilities from the forward pdf, and the next (pathlength -1) probabilities from the backward pdf
4b) sum these (n=pathlength) individual probabilities to get the final pdf
5) Then I sum f/pdf for each of the subpaths
6) finally I convert the final value from f to F
Sound about right?
