I think it is very possible!
The wave-format is not as advanced as it might look.
Some of the parts in the wave-header are static(=easy). We need Numchannels, Samplerate, ByteRate, BitsPersample from the input file, calculate the total size (ChunkSize) and some other values to create the complete header. Chunksize can be calculated after checking the length (not filesize) and the other data of the input file, for safey we can add one second to the length, and provide null-samples at the end if necessary. Now we can put the WAVE-header together (according to wave-spec) and store in RAM.
Next step is to allocate a buffer to store a few seconds of decoded data, and fill it up with the first seconds of decoded PCM-audio samples from the file to be decoded (Media Center already knows how to do this, since it can play media files to the computer speakers)
Now we can start delivering the "file" to the client!
Send the header and start reading from the buffer of decoded samples. The sound data format in Wave is little endian raw pcm-values = very nice.
As the buffer get's empty, we have to continuously fill it with more decoded samples from the input file, as when playing to the computer speakers.
From my point of view, the code needed for all this is already included in Media Center, almost. Since the program can playback media files to the computer speakers, we already have the "read input file and decode in real time to a buffer in memory"-part and the "get length, samplerate and so on from file" and also the UPNP-server can send wave-files. Now we need the short part that calculates the wave-header, and code to bind the parts together.