Thanks to both of you for the very detailed and helpful comments. I'll go through them more carefully. Certainly, there are many weaknesses in my play, but handling kingside attacks is the most glaring one right now. That game wasn't a typical example of my problem, since my position was so bad even before the kingside attack. (I usually respond to d4 with d5, but I tried something different in that game, obviously without much success.) Also, I didn't see Bxh7+ coming. Here's a game where I think I was in good shape, saw the kingside attack coming, and then collapsed anyway:
I'd welcome comments on this particular game, but I'm also interested in generalities.
Most of my recent losses have resulted from making mistakes when my opponent launched a kingside attack. I posted an example below. I can find the mistakes when I review the games, but I'm hoping for some tips and general principles to avoid the mistakes in the first place. (I'm sure people can find many weaknesses, but the kingside attacks seem like the most glaring problem now.)