JavaScript (EcmaScript 6) - 13 Characters
f=x=>!(x&x/3)
Creates a function f that takes a value and returns true (or false) if it is a power of 2 (or not) and will output the answer to the console.
Based on Ilmari Karonen's answer (so I included a few others of my own, below).
EcmaScript 6 can be run on FireFox or SpiderMonkey - no other browser/JavaScript engine yet supports EcmaScript 6 arrow functions. If you want to prompt for input then you can call it as an anonymous function (23 characters):
(x=>!(x&x/3))(prompt())
But it's less characters skip the function bit and just do:
JavaScript - 19 Characters
!((a=prompt())&a/3)
Will do the same as above but should run in all browsers and will prompt for input and output to the console (or in SpiderMonkey, you can replace prompt() [which doesn't exist as SpiderMonkey is command-line based] with readline()).
JavaScript (EcmaScript 6) - 20 Characters
f=x=>x>1?f(x/2):x==1
Creates a function f and, when called, will output the answer to the console.
JavaScript - 29 Characters
for(a=prompt();a>1;)a/=2;a==1
Same as above but will prompt the user for input and output to the console.
JavaScript - 32 Characters
for(a=prompt();!(a%2);)a/=2;a==1
JavaScript - 34 Characters
for(a=prompt();a==(a|0);)a/=2;a==1
predfunction, when applied to an integer n, returns n - 1. Are functions such as this, which are thin disguises around the forbidden operator, also forbidden? \$\endgroup\$), or most c-based languages'--. \$\endgroup\$