I know this thread is very old and I think there are other threads on the same topic.
I had the same problem and could NOT find any reliable information at all.
Then one day, in Builder's Brewery, a long-time SLer made a suggestion, that up front, seemed odd.
But, I figured, what the hell! I'll give it a try.
Now, before I go into this "fix", which did work for me, I have to say, in order to do this, you'll need to know how to script, at least a little bit AND the mesh that you have a problem with, you need to have at least >>COPY/MOD<< rights so that you can put a script into it.
First, please make a copy of the mesh and work on the copy so that nothing goes wrong with the one you use daily.
This may not work in every case. Apparently, the disappearing/corrupting mesh issue I was having, was actually caused by the viewer itself, not "SL", per say.
When you TP, the viewer needs to track the objects/attachments and update itself. If I have this right, I think this problem happens when the viewer glitches and loses "something" and doesn't update the mesh(es) and BOOM! Gone, corrupted or just messed up (seen or not seen). This seemed to happen mostly when TP'ing to laggy regions.
In my case, I'd TP and I'd still "See" the mesh, but it would stop working. If I clicked on it, depending on where I was, it would usually just disappear. I'd have to TP home (no lag area), then usually I could TP back to the bad lag area). This happened, probably, 85% of the time!
So, not the fix that worked for me and yes, it may seem weird, but it has worked for me. Since I wrote the script to do this, I haven't had a single failure yet.
What someone suggested to me, was to just write a script that upon change, to just make the mesh transparent for a second then back to normal! Yup, that was it.
In my case, I figured, this was an good opportunity to make a cute TPing effect. Also, I did have some issues, not often, when crossing regions. So, I though, I might as well make the script trigger on both TP and region change. (note IF statement). So in my code, I made the mesh (just 1 face of it) transparent at 50%, changed its color, captured the current texture, then changed the texture to a fun one and animated it.
I added a llSleep(2.0); // 2 second delay. After the delay, returned the texture and color to normal, and stopped the animation. That's it! For those who don't want to do a cute TP effect, you could just find any face on the mesh, perhaps one that is not as obvious, then just flip transparent, pause 1-2 seconds, flip back. That should work too.
The code would be:
if (change & CHANGED_TELEPORT || change & CHANGED_REGION)
Put your code here to change transparency back and forth.
It's pretty simple and for me, actually works.
In my case, I just added the code to the main script in the mesh object, but you could create a new, tiny script to handle this.
Hopefully, this will work for others.