O problema é que o valor de backgroundImageprecisa ser uma string como esta:
<div class="circular" v-bind:style="{ backgroundImage: 'url(' + image + ')' }"></div>
Aqui está um violino simplificado que está funcionando: https://jsfiddle.net/89af0se9/1/
Re: o comentário abaixo sobre o caso do kebab, é assim que você pode fazer isso:
<div class="circular" v-bind:style="{ 'background-image': 'url(' + image + ')' }"></div>
Em outras palavras, o valor de v-bind:styleé apenas um objeto Javascript simples e segue as mesmas regras.
ATUALIZAÇÃO: uma outra observação sobre por que você pode ter problemas para fazer isso funcionar.
Você deve certificar-se de que seu imagevalor esteja entre aspas para que a string final resultante seja:
url('some/url/path/to/image.jpeg')
Caso contrário, se o URL da imagem contiver caracteres especiais (como espaço em branco ou parênteses), o navegador pode não aplicá-lo corretamente. Em Javascript, a atribuição seria semelhante a:
this.image = "'some/url/path/to/image.jpeg'"
ou
this.image = "'" + myUrl + "'"
Tecnicamente, isso poderia ser feito no modelo, mas o escape necessário para mantê-lo HTML válido não vale a pena.
Mais informações aqui: Citar o valor de url () é realmente necessário?
backgroundImage) e não kebab case (background-image), embora os documentos digam que pode ser.