One option that fixes the problem in Forum_account's example could be where Byond assumes the bottom most pixels in an object is the bottom(where the object touches the ground) and casts the shadows from there by skewing a shadow copy of the original object.
As shown in this example: http://i56.tinypic.com/2wn5ssg.png
Not sure if Shadowcasting is the right word for this, because there happens to be a FoV algorithm (that I use in my lighting library for occlusion-related calculations) called Shadowcasting.
Anyway, the problem with this is that it's difficult to really capture the proper shape of the shadows if you simply have a shadow sprite to work with; This thing has to be rotated and distorted (trapezoidally), and it's not guaranteed to capture the proper shape of the shadow even if you do this, similarly to what Forum_Account's example shows. It gets even more complex if you want to capture the shadow's penumbra, umbra, and antumbra.
Additionally... What happens when you have multiple overlapping shadow sprites? If there is any ambient light (as in there is light reflecting off of the sky/local environment, a shadow will only get so dark. If you're familiar with it, think of ambient occlusion), the lighting solution becomes that much more complicated.
I propose that if there are going to be shadows, each graphic would need a corresponding opacity map.
like http://i56.tinypic.com/29pojv6.png
One option that fixes the problem in Forum_account's example could be where Byond assumes the bottom most pixels in an object is the bottom(where the object touches the ground) and casts the shadows from there by skewing a shadow copy of the original object.
As shown in this example: http://i56.tinypic.com/2wn5ssg.png
Of course that would bring up other issues if you wanted to have your objects flying or jumping.. Also the shadow lacks depth like a 3D object would have. If there was a way to factor in its side views as well it might fix that.