Do this: You'll need to pull code from web3, and it works best if your frontend is bundled using something like webpack or browserify:

    var SolidityCoder = require("web3/lib/solidity/coder.js");
    var log = receipt.logs[0];
    var data = SolidityCoder.decodeParams(["string", "uint"], log.data.replace("0x", ""));

In this case, we're decoding log data that contains two variables, one a string type and one a uint.

**EDIT:**

If you have the ABI available, you can detect which event it is related to that ABI:

    var SolidityCoder = require("web3/lib/solidity/coder.js");

    // You might want to put the following in a loop to handle all logs in this receipt.
    var log = receipt.logs[0];
    var event = null;

    for (var i = 0; i < abi.length; i++) {
      var item = abi[i];
      if (item.type != "event") continue;
      var signature = item.name + "(" + item.inputs.map(function(input) {return input.type;}).join(",") + ")";
      var hash = web3.sha3(signature);
      if (hash == log.topics[0]) {
        event = item;
        break;
      }
    }

    if (event != null) {
      var inputs = inputs.map(function(input) {return input.type;});
      var data = SolidityCoder.decodeParams(event.inputs, log.data.replace("0x", ""));
      // Do something with the data. Depends on the log and what you're using the data for.
    }