Short answer, no, Freestyle doesn't currently support detecting face intersections so what you want to achieve is basically impossible to do at this time, as far as I know.
There has to actually exist an edge there so Blender can detect the intersection and place a Freestyle stroke where it belongs.
Ideally you would build your model accordingly, so that there would be no intersections and your model is correctly shaped with no "inside" faces.
Otherwise you may try to use boolean operations through the Boolean Modifier and automatically intersect your objects and let Blender create said edges.
Have in mind that boolean operations have limitations, and will only work on closed, manifold meshes with no duplicate vertex or edges, consistent normals and non coplanar faces. Failing to do so will often result in unsuccessful operations.
Also boolean operations only work on two objects at a time, so if you have lots and lots of objects it will quickly become unpractical since you would have to preform Boolean operations for every possible combination of pairs of objects.
You will also end up with bad topology all over your model.
Search this site for Boolean
, there's about one question of those every day. You will encounter most often found problems, caveats and solutions for them.