I always like to show this picture to emu devs:

That's Jurassic Park, it uses pseudo-hires. On the left is what the image looks like on a TV. On the right is an emulator that doesn't support pseudo-hires. The bottom image shows how pseudo-hires works. You'll notice even columns are one background layer, and odd columns are another.

The important thing to take away is that the pixels at 512-width aren't as sharp as pixels at 256-width: they tend to blur with their neighbors. It's because the TV has less time to display them, and CRT fuzziness, and bla bla bla.

Note that even with the blending, you will still need to render the output at 512-width. Merging even and odd pixels at 50% will lose too much detail.

Also note, something no other emulator does for some reason, but I hope you guys will: hires and pseudo-hires, though they grab pixels differently, output exactly the same. Thusly, you should perform the same blurring when you render true hires screens like in Secret of Mana 2. Yes, it will make text slightly harder to read. But there's nothing stopping a real system from using pseudo-hires to display text, or real hires to blend two screens ala Jurassic Park. A real SNES won't magically output clearer pixels in true hires mode.

This is how I output 512-width lines and blend them to create the top-left image. It averages the next pixel to output with the previous pixel, then saves the true current pixel for the next loop iteration. Feel free to use something similar, or not.

      for(unsigned x = 0, prev = 0; x < 256; x++) {
        curr = get_pixel_swap(x);
        *ptr++ = (prev + curr - ((prev ^ curr) & 0x0421)) >> 1;
        prev = curr;

        curr = get_pixel_normal(x);
        *ptr++ = (prev + curr - ((prev ^ curr) & 0x0421)) >> 1;
        prev = curr;

Credit to blargg for the idea.