It's not expensive at all to get there. I've done the trip a few times by both car and rail (never bus). There are trains direct from Zagreb to Athens once a day - and twice a day with a change in Thessoloniki (probably spelt that wrong - but sure you know where I mean). The ticket is around €40 single if you just want a seat - and a little more with a bed. However, there is no bed on the 5 hour journey on the Th'ki - to Athens train.
The train goes via Beograd and Skjope.
Incidentally, I've given you trip in reverse - but it's the same the other way, as far as changing trains and prices are concerned.
Athens station is easily missed when being looked for. Considering how big the city is (one of Europe's largest), it has just one tiny station in the city centre - with just 2 little platforms.
Don't go by car via Serbia - unless you have already purchased a Serbian Green Card in advance. It's €135 to buy one at the border.... Ouch.