First thing you need to have done is get the fault read out. Chances are it will be a torque converter clutch solenoid fault or a slippage fault. If it's a torque converter fault (code 048 or PO741) you will most likely need to have the converter replaced as the internal seal in the converter deteriorates over time and allows pressure to bypass the converter clutch. If it's a slippage fault such as 1-2 shift plausibility- chances are it will end up needing a trans replacement due to failing clutches BUT I would also recommend having the cars EGS (trans computer) and DME (engine computer) programmed by the dealer to the latest software level as numerous improvements have been implemented over the years the E46 has been in service. Some of these updates change the trans computers sensitivity to faults- which MAY fix the issue.
Note- you may be able to get the fault read out for free from a local auto parts store.
If you NEED a converter- replace the converter seal at the same time. Parts are available from www.GETBMWPARTS.com You can find a reputable shop at www.BIMRS.org