Revit will only report visible when you select an element in the phase it's created in. So what I once did is to loop through all phases in the project and see if the element I need is visible at this specific phase.
Something like:
FilteredElementCollector phaseColl = new FilteredElementCollector(doc).OfClass(typeof(Phase));
foreach (Phase ph in phaseColl.Cast<Phase>().Where(ph => ph != null))
{
see if element is created in this phase and if it's visible
}