There is a morning train from Pathankot to Ahju, which is only 3kms from Bir. Trains from Delhi arrive at Pathankot an hour before the toy train leaves. The ride is long, tiring and often crowded but the stunning scenery more than compensates for any inconveniences.
Bir is about four hours or so from Dharamshala/McLeodGanj.
There are direct buses to Bir Road/Upper Bir leaving at 6am & 2pm from Lower Dharamshala. Or you can take a bus to Palampur, then to Baijnath. From Baijnath there are buses every half hour to Upper Bir - for Bir Colony ask them to drop you at Chowgan crossroads, then you have to walk about 1km. Or get off at Bir Road junction and get a taxi Rs50-60.
From the Inter-state Bus Terminal ISBT, take bus to either Baijnath or Bir Road - the latter is closer, but many buses only go as far as Baijnath. There are two overnight buses leaving Delhi. Both depart mid evening and arrive early morning.