DACs have different requirements depending on the application. You'll find high precision solutions using expensive components to get good absolute precision, but in audio you don't need that. Linearity is the most important parameter.
Since you'll be using an ATmega2560 which comes in a 100-pin package you can probably spare 16 I/Os, and then I would choose for parallel I/O. You'll have less timing problems than when working with serial I/O like I2S.
edit
Will seems to favor I2S and he has a point on condition that you want to connect to other, (semi-)professional audio equipment. As I understand it your digital audio path is very local, restricted to the connection between your AVR and the DAC. And then I would stick with the parallel. For 44.1kHz sample rate choose a crystal that allows you to get an interrupt every 22.676\$\mu\$s. Use the interrupt to automatically latch the last sample into the DAC, and then you have lots of time to prepare your next sample. That's the only timing you're dependent on. With I2S on the other hand you'll have more things to do. You may use SPI to shift the data out, but in the middle of a word you'll have to toggle the word clock. Things you don't have to worry about with parallel I/O.
The simplest ADC is an R-2R resistor ladder. The linearity depends on the resistors' matching, and there lies the problem for a discrete solution. You would need rather expensive precision resistors. The integrated approach is much better. The AD5547 also uses an R-2R ladder network (see fig. 17 on page 12), so why is this better than discretes? Integrated resistors (and capacitors) may have some tolerance on their nominal value, but their mutual match is the best you can get. So the 80k\$\Omega\$ resistors may be 80.5k\$\Omega\$, but you're sure they're all that value, and that's more important than the actual value itself.
The AD5547 accepts a 5V power supply and is 16-bit parallel in.
The application schematic is from the datasheet, so look there if this isn't very readable.
The DAC is registered, which means you can use the latch to update several DACs simultaneously, but you can make it asynchronous and transparent too by making/WR low and LDAC high (see page 13). Then the output will be continuously updated. But this is only possible if all inputs are updated simultaneously! With an 8-bit microcontroller you will probably write to 2 I/O ports, and then you'll need the latch!
Like most DACs it's current output, so you need to convert it to voltage. In this application with the AD8628 they use a RRIO (Rail-to-Rail I/O) opamp whose specs match the required resolution, but you can use another opamp if you like.
The ADR03 is a precision voltage reference, low drift and such, which for an audio application is overkill. Just make sure that your voltage reference is ripple and noise free!
edit
David rightly comments that this is somewhat older technology, but I thought it is OK since you're using a microcontroller (in lieu of a DSP) and a less-than-perfect class-D amplifier anyway. I picked this for my answer also because it is easy to understand.
David also mentions sigma-delta DACs, which have indeed better performance, but their working principle is a bit more complex, and they're (almost?) without exception serially controlled, for which the AVR doesn't have the hardware.
Don't be so shy.
0.3W is pretty loud! And don't forget that audio equipment potentiometers are logarithmical ones, so when you turn it halfway, it is roughly one tenth of the output power. So a 20W amp, driven with its rated RMS input signal would output 2W RMS when turned up halfway. A quarter setting would result in 0.2W RMS accordingly. And you said you'd want to test with music - rated music power is around 2x the rated RMS power for most of the speakers.
Don't fret, speakers are quite difficult to destroy in so low power situations. I did try with a PC speaker and a ~20W amp when I was young and feeble, to the point when it got quite warm on the outside - but no pops (it was horrible, by the way)... Ok, PC speakers are not too flimsy. I did build a tube amp from scrap parts, and on that I regularly used a way too -electrically- underrated speaker, and to make the situation even worse, I used it as a guitar amplifier - driven into the maximal power tube saturation I could achieve...
If however you'd want a professional approach, use an LM386 power op-amp to play with, a few external components and you are ready to go. I think that is far easier to obtain than an impedance matcher transformator - not to mention, it degrades and colours the sound a lot less.
LM386 datasheet
Best Answer
If you're going to be using just the STM to drive a speaker, the main limiting factor is the current handling capability of the pins of the microcontroller.
You didn't mention what power you want coming out of the speaker, but let's take a look at what the microcontroller can provide. Its working voltage range is 1.7 V to 3.6 V. According to absolute maximum ratings, the maximum current for any pin is 25 mA. So rough calculation is 3.6 V times 25 mA is 90 mW. This is the point where you can expect that your pin is going to burn out. Do note that to be able to reach this rating, you'd need a special high-impedance loudspeaker. This pretty much means that for any usable power level with a loudspeaker, you'd need an external amplifier. It might be OK for headphones though.
How does the math work? Well to put it simply, you have a speaker with its nominal impedance. You also have the voltage and current ratings for the amplifier or DAC. You would also need to take a look at the efficiency graphs in the datasheet to see how well would the amplifier work. In general, you're expected to use DAC only to provide a signal and then use an amplifier to drive the transducer. There are some DACs with integrated amplifiers though.
In general, DAC is a component inside of a codec. Usually, a codec will have for example needed circuitry for a microphone input, have controllable gain, have some filtering inside of it and so on. A DAC will just to the digital to analog conversion.
As noted in the comments, you'd need to check if your microcontroller actually has a DAC inside of it. I can't see it on the datasheet. Are you maybe using a development board with this micro on it? In that case, the board might have its own DAC connected to the micro.