LHR, LGW and BHX are all between three and four hours from Swansea by public transport, so there isn't really much difference between them.
As for making your 0900 departure from BHX... I don't think you can do this without an overnight stop in the Birmingham area. The nearest town to BHX is Coventry rather than Birmingham itself.