конечно есть решения, с :after, и сделать треугольник с белой рамкой средствами CSS.
но все это:
1) некрасиво, как на меня;
2) сверху блока идёт градиент серого цвета ..
Василь Бойко: если не на белом фоне, то нужно изображение в png с прозрачностью сохранять. В этом случае на много лучше через after повесить треугольник сверху, чем заставлять пользователя грузить несколько мегабайт бесполезных изображений.
"Идеального" способа, к сожалению, нет.
Все варианты либо костыльны и некрасивы с точки зрения кода (например, нашлепывать сверху белый треугольник), либо не совсем кроссбраузерны (отсечение по SVG-маске), либо геморны для контент-менеджера (готовить картиники с уже обрезанным углом).